文字列を数値に変換する関数
解説
strtod ファミリの各関数は、null で終わる文字列を数値に変換します。 使用できる機能を次の表に示します。
関数 |
説明 |
---|---|
strtod |
倍精度浮動小数点値に変換する文字列 |
strtol |
長整数に変換する文字列 |
strtoul |
unsigned long 型の整数に変換する文字列 |
_strtoi64 |
__int64 の 64 ビット整数に変換する文字列 |
_strtoui64 |
__int64 の符号なしな 64 ビット整数に変換する文字列 |
wcstod、wcstol、wcstoulと _wcstoi64 は strtod、strtol、strtoulと _strtoi64のワイド文字バージョンであり、それぞれです。 これらのワイド文字単位の各関数の文字列引数はワイド文字列で、; 各関数は single-byte–character の対応とは別の方法で同様に動作します。
strtod 関数は 2 個の引数を受け取ります。: 1 番目の変換プロセスの最後の文字を入力文字列と 2 番目のポインターです。 strtol、strtoul、_strtoi64 と _strtoui64 は基数として変換プロセスで使用する 3 番目の引数を受け取ります。
入力文字列は、指定された型の数値として解釈できる文字シーケンスです。 各関数は、数値の一部として認識できない最初の文字から文字列を読み取ることを停止します。 数値として認識できない最初の文字が、終端の NULL 文字の場合もあります。 strtol、strtoul、_strtoi64と _strtoui64の場合、この終端文字は、大きい最初の数字ユーザー指定の基数に以上であるでもかまいません。
変換終了文字へのユーザー指定のポインターがコール タイムの NULL に設定し、スキャンを停止した文字へのポインターは、代わりに格納されます。 変換 (有効な数字が見つからなかった場合、または無効なベースが指定されました) 実行できない場合は、文字列ポインターの値は、そのアドレスに格納されます。
strtod のフォームは、次の文字列を想定する:
null[] []) digits[] [] ###.digits[{d | D | e | E} []) digits]
空白には、空白またはタブで無視される構成される可能性がある; 符号は (+) または描画できます**–** () ; digits とは、一つ以上の 10 進数です。 小数点文字の前に数字がない場合は、少なくとも 1 つの数字が小数点文字の後に必要です。 10 進数の後には指数部の開始文字 (d、D、e、または E) と符号付き整数からオプションで構成される指数を配置できます。 指数部と小数点文字のいずれも指定されない場合は、文字列の最後の数字の後に小数点文字が続くと想定されます。 この形式に一致しない文字を見つけるとスキャンを停止します。
strtol、strtoul、_strtoi64と _strtoui64 関数は次のフォームの文字列を想定する:
null[] [{+ | –} []0 [{ x | X } []]digits]
基本引数を 2 に、36 より大きい場合、数値のベースとして使用されます。 0 の場合ベースを決定するために、変換終了ポインターによって参照される最初の文字が使用されます。 最初の文字が 0、2 文字目が X または x でない場合は文字列の長さが 8;整数として解釈されます。それ以外の場合は 10 進数として解釈されます。 最初の文字が '0' で、2 番目の文字が 'x' または 'X' である場合、文字列は 16 進数と解釈されます。 最初の文字が '1' ~ '9' の間の数値の場合、文字列は 10 進数と解釈されます。 「z」の文字「a」 (または「Z "、「A」) 値 10 から 35;が割り当てられます。代入された値である ベース 未満文字だけです。 strtoul と _strtoui64 (–の) をプレフィックスと+ () または描画 a を使用して; 先頭の記号は、戻り値が拒否されることを示します。
出力値は、ロケールの LC_NUMERIC カテゴリの設定で決まります。詳細については、「setlocale」を参照してください。 _l サフィックスが付いていないこれらの関数のバージョンでは、このロケールに依存する動作に現在のロケールを使用します。_l サフィックスが付いているバージョンは、渡されたロケール パラメーターを代わりに使用する点を除いて同じです。
これらの関数によって返される値がオーバーフローまたはアンダーフローが発生するか、変換が有効な場合、特殊な値は次のように戻ります:
関数 |
状態 |
返される値 |
---|---|---|
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.で定義されます。
wcstod、wcstol、wcstoul、_wcstoi64と _wcstoui64 は strtod、strtol、strtoul、_strtoi64と _strtoui64のワイド文字バージョンであり、それぞれ;です これらのワイド文字単位の各関数への変換終了引数へのポインターはワイド文字列です。 それ以外の場合は、次のワイド文字単位の各関数は single-byte–character の対応と同様に動作します。