サポートされる最大の符号なし整数型の整数値に文字列を変換します。
構文
uintmax_t strtoumax(
const char *strSource,
char **endptr,
int base
);
uintmax_t _strtoumax_l(
const char *strSource,
char **endptr,
int base,
_locale_t locale
);
uintmax_t wcstoumax(
const wchar_t *strSource,
wchar_t **endptr,
int base
);
uintmax_t _wcstoumax_l(
const wchar_t *strSource,
wchar_t **endptr,
int base,
_locale_t locale
);
パラメーター
strSource
NULL で終わる変換対象の文字列。
endptr
スキャンの終了位置を示す文字へのポインター。
base
使用する基数。
locale
使用するロケール。
戻り値
strtoumax はオーバーフローについての変換された値 (ある場合) または UINTMAX_MAX を返します。 変換を実行できない場合、strtoumax は 0 を返します。
wcstoumax 関数の戻り値は、strtoumax 関数の戻り値と同じです。 両方の関数とも、オーバーフローまたはアンダーフローが発生した場合、errno は ERANGE に設定されます。
リターン コードの詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。
解説
これらの関数は入力文字列 strSource を uintmax_t の整数値に変換します。
strtoumax では、数値の一部として認識できない文字を最初に見つけた時点で、文字列 strSource の読み取りを停止します。 終端の null 文字、または base以上の最初の数値を指定できます。 ロケールの LC_NUMERIC カテゴリの設定によって、strSource の小数点文字が認識されます。 詳細については、「 setlocale」と「 _wsetlocaleの両方を管理できます。
strtoumax と wcstoumax は現在のロケールを使用します。_strtoumax_l と _wcstoumax_l は渡されたロケールを代わりに使用するという点を除いて同じです。 詳細については、「 Locale」を参照してください。
endptrがNULLされていない場合は、スキャンを停止した文字へのポインターが、endptrが指す場所に格納されます。 変換できなかった場合 (有効な数字が見つからなかった場合、または無効な base を指定した場合) は、strSource の値を endptr が指す位置に格納します。
strtoumax のワイド文字バージョンは wcstoumax です。strSource 引数はワイド文字列です。 それ以外では、これらの関数の動作は同じです。
汎用テキスト ルーチンのマップ
| TCHAR.H のルーチン |
_UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
|---|---|---|---|
_tcstoumax |
strtoumax |
strtoumax |
wcstoumax |
_tcstoumax_l |
strtoumax_l |
_strtoumax_l |
_wcstoumax_l |
strtoumax は、strSource が次の形式の文字列を指すものと想定します。
[
whitespace] [{+|-}] [0[{x|X}]] [digits|letters]
whitespace は、空白文字とタブ文字で構成でき、無視されます。
digits は、1 個以上の 10 進数です。
letters は、'a' から 'z' (または 'A' から 'Z' まで) の 1 つ以上の文字です。 この形式に一致しない最初の文字でスキャンが停止します。
base が 2 から 36 の間の場合、数値の基数として使用されます。
base が 0 の場合、strSource が指す文字列の先頭の文字を使用して、基数を判断します。 最初の文字が '0' で、2 番目の文字が 'x' または 'X' でない場合、文字列は 8 進数として解釈されます。 最初の文字が '0' で、2 番目の文字が 'x' または 'X' である場合、文字列は 16 進数と解釈されます。 最初の文字が '1' ~ '9' の間の数値の場合、文字列は 10 進数と解釈されます。 'a' ~ 'z' (または 'A' ~ 'Z') の文字には、10 ~ 35 の値が割り当てられています。base よりも小さい値が割り当てられている文字のみ許可されます。 基数の範囲外にある文字を最初に見つけた時点で、スキャンは停止されます。 たとえば、base が 0 で、スキャンされた最初の文字が '0' の場合、8 進数と見なされ、'8' または '9' の文字が出現すると、スキャンは停止されます。
strtoumax では、プラス記号 (+) または負符号 (-) プレフィックスを使用できます。先頭のマイナス記号は、戻り値が変換された文字列の 2 の絶対値の補数であることを示します。
要件
| ルーチンによって返される値 | 必須ヘッダー |
|---|---|
strtoumax、 wcstoumax、 _strtoumax_l、 _wcstoumax_l |
<inttypes.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
strtod の例を参照してください。
関連項目
データ変換
ロケール
localeconv
setlocale, _wsetlocale
文字列から数値の関数
strtod、 _strtod_l、 wcstod、 _wcstod_l
strtoimax、 _strtoimax_l、 wcstoimax、 _wcstoimax_l
strtol、 wcstol、 _strtol_l、 _wcstol_l
strtoul、 _strtoul_l、 wcstoul、 _wcstoul_l
strtoll、 _strtoll_l、 wcstoll、 _wcstoll_l
atof、 _atof_l、 _wtof、 _wtof_l