文字列を数値に変換する関数
解説
strtod ファミリの各関数は null で終わる文字列に数値を変換します。使用できる機能を次の表に示します。
Function |
Description |
---|---|
strtod |
各倍精度浮動小数点値に変換した文字列 |
strtol |
長整数に変換した文字列 |
strtoul |
符号なし長整数に変換した文字列 |
_strtoi64 |
__int64 の 64 ビット整数に変換した文字列 |
_strtoui64 |
__int64 の符号なし 64 ビット整数に変換した文字列 |
wcstodwcstolwcstoul と _wcstoi64 は strtodstrtolstrtoul と _strtoi64それぞれのワイド文字バージョンです。これらのワイド文字単位の各関数の文字列引数はワイド文字列です。; 各関数はバイト文字の対応と別の動作は同じです。
strtod の関数は 2 個の引数を受け取ります : 1 番目の変換プロセスを終了文字を入力文字列と 2 番目のポインターです。strtolstrtoulおよび _strtoi64 _strtoui64 番号はベースとして変換プロセスで使用する 3 番目の引数を受け取ります。
入力文字列は指定した型の数値として解釈できる文字のシーケンスです。各関数は数値の一部として認識できない最初の文字と文字列の読み取りを停止します。数値として認識できない最初の文字が、終端の NULL 文字の場合もあります。strtolstrtoul_strtoi64 と _strtoui64 ではこの終了文字も大きい最初の数字ユーザー指定のベースに番号である場合はになります。
終端の文字への変換でユーザーが指定したポインターが呼び出し時刻に null に設定されていない場合スキャンを停止した文字へのポインターはそこに格納されます。変換 (有効な数字が見つからなかった場合または無効な基本クラスを指定した場合) は実行できない場合は文字列ポインターの値はそのアドレスに格納されます。
strtod は次の形式の文字列を想定しています :
[ スペース ] [] [] [digits 符号 **。**digits 入力] [{d | D | e | 符号 E} [入力]digits 入力]
空白は 無視される空白タブ文字で構成される可能性がある ; は符号 (+) または負符号 ( – ); と digits は一つ以上の 10 進数です。小数点文字の前に数字がない場合は、少なくとも 1 つの数字が小数点文字の後に必要です。10 進数の文字 ()dDEまたは E)必要に応じて符号付き整数で構成される指数部を指定できます。指数部と小数点文字のいずれも指定されない場合は、文字列の最後の数字の後に小数点文字が続くと想定されます。この形式に一致しない文字を見つけるとスキャンを停止します。
strtolstrtoul_strtoi64 と _strtoui64 の関数には次の形式の文字列を想定しています :
[] [{+ 空白 | – }] [0 [{ X |X }] [入力]digits 入力]
引数 BASE が 2 と 36 の間にある場合は数値のベースとして使用されます。0 の場合を決定するために終端の変換のポインターで参照されている最初の文字が使用されています。最初の文字が 02 文字目が X または x である文字列を 8 バイトの整数として解釈されます。; それ以外の場合は10 進数として解釈されます。最初の文字が 「 0 " で2 番目の文字が X または x の場合文字列は 16 進整数として解釈されます。最初の文字が " 9 "「 1 " の場合文字列は 10 進整数として解釈されます。「 z を使用して文字で (または z 「「) は値 10 から 35 が代入 ; 代入された値は ベース ではない文字だけです。strtoul と _strtoui64 – () 記号のプレフィックスと +() または削除を有効にします ; 先頭の記号は戻り値が拒否されることを示します。
出力値は、ロケールの LC_NUMERIC カテゴリの設定で決まります。詳細については、「setlocale」を参照してください。_l のサフィックスが付いたこれらの関数の各バージョンはこの依存する動作に現在のロケールを使用します ; _l のサフィックスのバージョンが同じものですが代わりに渡されたロケール パラメーターを使用します。
これらの関数によって返される値によってオーバーフローまたはアンダーフローが発生するか変換が可能な場合は次のように特殊な値が返されます :
Function |
状態 |
戻り値 |
---|---|---|
strtod |
オーバーフロー |
+/- HUGE_VAL |
strtod |
アンダーフローまたは変換なし |
0 |
strtol |
オーバーフロー + |
LONG_MAX |
strtol |
- オーバーフロー |
LONG_MIN |
strtol |
アンダーフローまたは変換なし |
0 |
_strtoi64 |
オーバーフロー + |
_I64_MAX |
_strtoi64 |
- オーバーフロー |
_I64_MIN |
_strtoi64 |
変換ができません。 |
0 |
_strtoui64 |
オーバーフロー |
_UI64_MAX |
_strtoui64 |
変換ができません。 |
0 |
_I64_MAX_I64_MIN _UI64_MAX は LIMITS.H. で定義されます。
wcstodwcstolwcstoul_wcstoi64 と _wcstoui64 は strtodstrtolstrtoul_strtoi64 と _strtoui64 のワイド文字バージョンですそれぞれ ; これらのワイド文字単位の各関数の終わりの変換のへのポインター引数はワイド文字列です。それ以外の場合は次のワイド文字単位の関数はバイト文字の対応するプロパティと同じように動作します。