C++ の Stol() 関数

C No Stol Guan Shu



C++ は、高性能アプリケーションの開発に使用される最も一般的で最も古いプログラミング言語の 1 つです。これは、非常に熟練したプログラマーと初心者の開発者の間で使用されます。これは主にゲーム開発で使用され、オペレーティング システムの開発に理想的なオプションです。 C++ 言語でコードを記述していると、データをある型から別の型に変換することがあります。この記事では、文字列を長整数に変換する方法を学習します。文字列を他の形式に変換するのは非常に困難です。ただし、C++ プログラミング言語は、文字列を整数に変換するための迅速かつ効率的な方法を提供します。

C++ の stol 関数

stol は、std ライブラリで提供される C++ 組み込み関数です。文字列を長い整数に変換します。文字列の内容を指定された基数の整数に変換し、長整数値を返します。 3 つのパラメーターを使用します。1 つは入力文字列、2 番目はオブジェクト パラメーター、3 番目は基数です。 stol 関数の構文を以下に示します。









関数 stol は、input_string、size、および base の 3 つのパラメーターを取ります。 「input_string」は、長い整数に変換する必要がある入力文字列を表します。



「size」パラメータは、数値の後に入力文字列内の次の文字位置を持つ size_t 型のオブジェクトを表します。使用する必要がない場合は、null ポインターにすることができます。





3 番目のパラメーターである「base」パラメーターは、文字列を解釈する必要がある基数を表します。たとえば、基数「2」が指定されている場合、文字列は基数 2 の整数として解釈されます。 base パラメータのデフォルト値は 10 で、0 が指定された場合、base 値はシーケンスのフォーマットによって決定されます。 stol 関数は、指定された文字列の int 値を表す長整数を返します。

次に、stol 関数が C++ でどのように機能するかを理解するために、いくつかの例を調べてみましょう。



例 #1

この例では、10 進数と 16 進数の文字列を指定して、stol 関数がそれらを 10 進数と 16 進数の整数に変換する方法を確認します。

「dec = 123456789」は 10 進文字列であり、stol 関数 stol(dec,&size) を使用して長整数に変換されます。基数は入力パラメーターとして関数に提供されないことに注意してください。その結果、デフォルトの基数 10 を使用して文字列を 10 進数に変換します。ただし、文字列を 16 進数から 10 進数に変換するために、基数 16 が入力パラメーター stol(hex, nullptr, 16) として提供されます。ご存じのように、16 進数は 16 進数を表します。

#include

#include <文字列>

#include

整数 主要 ( )

{

標準 :: ストリング 12月 = 「123456789」 ;
標準 :: ストリング 六角 = 'a2bf3c' ;
標準 :: ストリング :: size_type サイズ ;
長いです リデック = 標準 :: テーブル ( 12月、 & サイズ ) ;
長いです リヘックス = 標準 :: テーブル ( 六角、 nullptr 16 ) ;
標準 :: カウト << '10進文字列を入力' << 12月 << ' long int に変換 ' << リデック << ' \n ' ;
標準 :: カウト << '16進数文字列を入力' << 六角 << ' long int に変換 ' << リヘックス << ' \n ' ;
戻る 0 ;


}

これが次の出力です。 10 進文字列「123456789」が「123456789」10 進長整数に変換されることに注意してください。一方、16 進数の文字列「a2bf3c」は、16 進数の「10665788」に変換されます。 stol 関数によって変換がどのように行われるかを知るために必要な手順は次のとおりです。

( A2BF3C ) ₁₆ = ( 10 × 16 ) + ( 2 × 16 ) + ( 十一 × 16 ³ ) + ( 15 × 16 ² ) + ( 3 × 16 ¹ ) + ( 12 × 16 ) = ( 10665788 ) ₁₀

例 2

この例では、stol 関数を使用して 2 進数を変換します。以下のコードを見て、コードの動作を理解しましょう。 「1010110110」は入力文字列として指定され、基数 2 は入力基数パラメーター stol(bin,&size, 2) として指定され、バイナリ形式の数値を表します。 stol 関数は、次の手順に従って 2 進数を 10 進数に変換します。

( 1010110110 ) = ( 1 × 2 ) + ( 0 × 2 ) + ( 1 × 2 7 ) + ( 0 × 2 ) + ( 1 × 2 ) + ( 1 × 2 ) + ( 0 × 2 ³ ) + ( 1 × 2 ² ) + ( 1 × 2 ¹ ) + ( 0 × 2 ) = ( 694 ) ₁₀ #include

#include <文字列>

#include

整数 主要 ( )

{

標準 :: ストリング 置き場 = 「1010110110」 ;
標準 :: ストリング :: size_type サイズ ;
長いです リビン = 標準 :: テーブル ( 置き場、 & サイズ、 2 ) ;
標準 :: カウト << 'バイナリ文字列を入力' << 置き場 << ' long int に変換 ' << リビン << ' \n ' ;
戻る 0 ;


}

ご覧のとおり、stol 関数は、一般的な 2 進数から 10 進数への変換プロセスと同じ結果を返しました。

例 3

この例では、無効な入力で stol 関数をテストするとどうなるかを確認します。複数の文字の文字列が stol 関数に提供され、関数が文字列の基数を自動的に決定するように基数として 0 が提供されます。コードは次のとおりです。

10、16、2 などの基本値によって決定されない入力文字列として一連の文字が提供されるため、関数はエラー値を返します。

#include

#include <文字列>

#include

整数 主要 ( )

{

標準 :: ストリング チャンネル = 'abcdefgh' ;

標準 :: ストリング :: size_type サイズ ;
長いです = 標準 :: テーブル ( チャンネル、 nullptr 0 ) ;
標準 :: カウト << 「入力文字列」 << チャンネル << ' long int に変換 ' << << ' \n ' ;
戻る 0 ;


}

以下の出力を参照してください。関数はベース値で決定できない文字列を処理しないため、コンパイラは「invalid_argument」例外を発生させたことに注意してください。

例 4

この例では、有効な入力と無効な入力の組み合わせを提供して、stol() 関数の結果を確認します。

入力文字列は、有効な文字と無効な文字の組み合わせ「123xf25」です。 「0」は入力ベースとして提供されるため、関数は文字の種類に基づいて入力文字列のベースを自動的に決定します。

#include

#include <文字列>

#include

整数 主要 ( )

{

標準 :: ストリング チャンネル = 「123xf25」 ;
標準 :: ストリング :: size_type サイズ ;
長いです = 標準 :: テーブル ( チャンネル、 nullptr 0 ) ;
標準 :: カウト << '入力文字列' << チャンネル << ' long int に変換 ' << << ' \n ' ;
戻る 0 ;


}

以下は、有効な入力と無効な入力を組み合わせた stol 関数の動作を示す出力です。

この関数は「123」を 10 進数の「123」に変換し、無効な入力「x」を受け取ったため、残りの文字列を破棄したことに注意してください。文字「x」の後の文字列は stol 関数によって変換されず、文字列の最初の文字のみが long int として返されます。

結論

この投稿では、C++ プログラミング言語の stol 関数について調べました。いくつかの便利で簡単な例の助けを借りて、stol 関数がさまざまなタイプの入力でどのように機能するかを学びました。 stol 関数は、変換される入力文字列、文字列内での関数の位置を表すサイズ パラメータ、および入力文字列のベースを表すベース値の 3 つのパラメータを取ります。入力文字列の long int 値を返します。