std::stoul, std::stoull
| ヘッダ <string> で定義 |
||
| unsigned long stoul ( const std::string& str, std::size_t* pos = nullptr, int base = 10 ); |
(1) | (C++11以降) |
| unsigned long stoul ( const std::wstring& str, std::size_t* pos = nullptr, int base = 10 ); |
(2) | (C++11以降) |
| unsigned long long stoull( const std::string& str, std::size_t* pos = nullptr, int base = 10 ); |
(3) | (C++11以降) |
| unsigned long long stoull( const std::wstring& str, std::size_t* pos = nullptr, int base = 10 ); |
(4) | (C++11以降) |
文字列strの符号なし整数値を解釈します。
変換関数内部のポインタ(型はchar* (1,3) または wchar_t* (2,4))をptrとします。
std::strtoul(str.c_str(), &ptr, base)を呼び出します。std::wcstoul(str.c_str(), &ptr, base)を呼び出します。std::strtoull(str.c_str(), &ptr, base)を呼び出します。std::wcstoull(str.c_str(), &ptr, base)を呼び出します。まず、最初の非空白文字が見つかるまで空白文字(std::isspaceの呼び出しで識別される)をすべてスキップし、次に可能な限り多くの文字を、基数baseの有効な符号なし整数数値表現を形成するために取り込み、それらを整数値に変換します。有効な符号なし整数値は、以下の部分から構成されます。
- (任意)プラスまたはマイナスの記号
- (オプション) 8進数を表す接頭辞(
0)(基数が8または0の場合にのみ適用されます) - (オプション) 16進数を表す接頭辞(
0xまたは0X)(基数が16または0の場合にのみ適用されます) - 数字のシーケンス
baseの有効な値のセットは{0, 2, 3, ..., 36}です。基数2の整数の有効な数字のセットは{0, 1}、基数3の整数は{0, 1, 2}などです。10より大きい基数では、有効な数字にはアルファベット文字が含まれ、基数11の整数ではAaから始まり、基数36の整数ではZzまでとなります。大文字・小文字は区別されません。
現在インストールされているC ロケールによって、追加の数値形式が受け入れられる場合があります。
baseの値が0の場合、数値基数は自動検出されます。プレフィックスが0の場合は基数は8進数、プレフィックスが0xまたは0Xの場合は基数は16進数、それ以外の場合は基数は10進数となります。
入力シーケンスにマイナス符号が含まれていた場合、数字のシーケンスから計算された数値は、結果の型で単項マイナス演算子のように負の値にされ、符号なし整数ラップアラウンド規則が適用されます。
posがヌルポインタでない場合、ptrには、str.c_str()内の最初の未変換文字のアドレスが格納され、その文字のインデックスが計算されて*posに格納されます。これにより、変換によって処理された文字数がわかります。
目次 |
[編集] パラメータ
| str | - | 変換する文字列 |
| pos | - | 処理された文字数を格納する整数へのアドレス |
| base | - | 基数 |
[編集] 戻り値
指定された符号なし整数型に変換された文字列。
[編集] 例外
- std::invalid_argument: 変換が実行できなかった場合。
- 変換された値が結果の型の範囲外になる場合、または基になる関数(
std::strtoulまたはstd::strtoull)がerrnoにERANGEを設定した場合、std::out_of_range。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2009 | C++11 | 次の場合、std::out_of_rangeはスローされません。std::strtoulまたはstd::strtoullがerrnoにERANGEを設定する。 |
スローします。 |
[編集] 関連項目
| (C++11)(C++11)(C++11) |
文字列を符号付き整数に変換する (function) |
| (C++11)(C++11)(C++11) |
文字列を浮動小数点値に変換する (function) |