この記事では、C++ の std::stol 関数について、構文と例とともに学習します。
std::stol() とは何ですか?
の 標準テンプレート ライブラリ (STL) C++ には以下が含まれます std::stol() 変換するために特別に作成された関数 文字列から長整数への変換 。この関数は、ユーザー入力を操作する場合、または外部ソースからデータを読み取る場合 (通常、入力が文字列形式で与えられる場合) に特に役立ちます。文字列を入力として受け取った後、同等の長整数を返します。変換が不可能な場合、または入力文字列に有効な数値の一部ではない文字が含まれている場合は、 std::invalid_argument または std::out_of_range 型の例外がスローされます。
それ以外の場合はJavaで
構文:
次の構文があります。
long std::stol(const std::string& str, size_t* pos = 0, intbase = 10);
文字列: 長整数に変更する必要があるテキスト。
位置: 文字列の最初の未変換文字のインデックス。size_t オブジェクトへのポインタとして格納されます。必要ない場合は、このオプションのパラメータを nullptr に設定できます。
ベース: 変換の数値ベース。デフォルトは 10 です。
戻り値: 入力文字列から解析された数値は、関数によって長整数として返されます。
例外: 変換を完了できない場合、または入力文字列内の文字が無効な場合、この関数は例外をスローします。変換を実行できなかった場合、考えられる例外は次のとおりです。 std::invalid_argument そして std::範囲外 変換された値が表現可能な範囲を長期間にわたって超えている場合。
使用例:
std::stol() ユーザーから文字列形式で受け取った数値入力を数値型に変換して、さらに処理できるようにする場合に便利です。
データ表現として文字列を含むファイル内の数値データを読み取る。
データ検証には、ユーザー入力を検証および検証することによって、長い数値が正確に表現されていることを確認することが含まれます。
プログラム例 1:
の使用法を説明するために例を見てみましょう std::stol 関数 C++で。
#include #include int main() { std::string numStr = '12345'; try { long result = std::stol(numStr); std::cout << 'Converted value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Invalid argument: ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Out of range: ' << e.what() << std::endl; } return 0; }
出力:
説明:
- という文字列変数 numStr プログラムの開始時に値「12345」で初期化されます。
- コードは try ブロックに移動し、その中に含まれるステートメントの実行を試行することを示します。ここでは、潜在的な例外について説明します。
- プログラムは使用しようとします std::stol() try ブロック内で文字列 numStr を長整数に変換します。
- 変換が成功した場合、結果は変数 result に保持されます。
- 正常に変換された数値は、プログラムによって標準出力に出力されます。
- catch ブロックの 1 つは、変換中に発生する例外を処理します。
- 例外のタイプが std::invalid_argument の場合、引数が無効であることを示すエラー メッセージが出力されます。
- 例外が std::out_of_range タイプの場合、変換結果が有効な範囲外であることを示すエラー メッセージが出力されます。
- プログラムはオペレーティング システムに 0 を返し、実行が成功したことを示し、メイン関数が終了します。
簡単に言うと、コードは std::stol() try ブロック内の関数を使用して、文字列 '12345' を長整数に変換します。変換が成功すると、結果が出力されます。例外を捕捉し、例外が発生した場合 (引数が間違っているか、結果が範囲外であるために)、関連するエラー メッセージを出力します。
最後に、プログラムは正常に完了したことを示す 0 を返します。
プログラム例 2:
の使用法を説明するために別の例を見てみましょう。 std::stol 関数 C++で。
ラジェシュ・カンナ
#include #include int main() { std::cout << 'Enter numeric strings to convert to long integers (type 'exit' to end): '; while (true) { std::string userInput; std::cout <> userInput; if (userInput == 'exit') { std::cout << 'Exiting program. Goodbye! '; break; } try { long result = std::stol(userInput); std::cout << 'Converted Value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Error: Invalid argument in input '' << userInput << '': ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Error: Out of range for input '' << userInput << '': ' << e.what() << std::endl; } } return 0; }
出力:
説明 :
- この例では、ユーザーは変換する文字列値を入力するように求められます。
- アプリケーションは、ユーザーが入力するまでユーザー入力を受け入れ続けます。 '出口' while ループを使用します。
- 入る '出口' このプログラムは別れのメッセージを出力し、ループを終了します。
- そうでない場合は、使用しようとします std::stol 入力をlongに変換します。
- 変換が成功すると、変換された値が出力されます。
- 例外 (無効な引数、範囲外) をキャッチし、エラー メッセージを出力して続行します。
- 新しいユーザー入力を待つ間、ループは次の反復に進みます。