strtoimax
、 _strtoimax_l
、 wcstoimax
、 _wcstoimax_l
サポートされる最大の符号付き整数型の整数値に文字列を変換します。
構文
intmax_t strtoimax(
const char *strSource,
char **endptr,
int base
);
intmax_t wcstoimax(
const wchar_t *strSource,
wchar_t **endptr,
int base
);
intmax_t _strtoimax_l(
const char *strSource,
char **endptr,
int base,
_locale_t locale
);
intmax_t _wcstoimax_l(
const wchar_t *strSource,
wchar_t **endptr,
int base,
_locale_t locale
);
パラメーター
strSource
NULL で終わる変換対象の文字列。
endptr
スキャンの終了位置を示す文字へのポインター。
base
使用する基数。
locale
使用するロケール。
戻り値
strtoimax
は、オーバーフローを引き起こす場合を除き、文字列 strSource
で表現される値を返します。オーバーフローの場合は、INTMAX_MAX
または INTMAX_MIN
を返し、errno
は ERANGE
に設定されます。 この関数は、変換を実行できない場合には 0 を返します。 wcstoimax
関数の戻り値は、strtoimax
関数の戻り値と同じです。
INTMAX_MAX
および INTMAX_MIN
は、stdint.h で定義されます。
strSource
が NULL
または base
がゼロ以外で 2 未満または 36 を超える場合、errno
は EINVAL
に設定されます。
リターン コードの詳細については、「errno
、_doserrno
、_sys_errlist
、および _sys_nerr
」を参照してください。
解説
strtoimax
関数は、strSource
を intmax_t
に変換します。 strtoimax
のワイド文字バージョンは wcstoimax
です。strSource
引数はワイド文字列です。 それ以外では、これらの関数の動作は同じです。 どちらの関数も、数値の一部として認識できない最初の文字で strSource
文字列の読み取りを停止します。 終端の null 文字、または base
以上の最初の数値を指定できます。
ロケールの LC_NUMERIC
カテゴリ設定によって、 strSource
での基数の認識が決まります。詳細については、「 setlocale
、 _wsetlocale
」を参照してください。 _l
サフィックスが付いていない関数は現在のロケールを使用します。_strtoimax_l
および _wcstoimax_l
は、渡されたロケールを代わりに使用する点を除いて、_l
サフィックスが付いていない関数と同じです。 詳細については、「 Locale」を参照してください。
endptr
がNULL
されていない場合は、スキャンを停止した文字へのポインターが、endptr
が指す場所に格納されます。 変換できなかった場合 (有効な数字が見つからなかった場合、または無効な base を指定した場合) は、strSource
の値を endptr
が指す位置に格納します。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン | _UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tcstoimax |
strtoimax |
strtoimax |
wcstoimax |
_tcstoimax_l |
strtoimax_l |
_strtoimax_l |
_wcstoimax_l |
strtoimax
は、strSource
が次の形式の文字列を指すものと想定します。
[
whitespace
] [{+
|-
}] [0
[{x
|X
}]] [digits
|letters
]
whitespace
はスペースやタブ文字で構成することができ、無視されます。digits
は 1 つ以上の 10 進数です。letters
は 1 つ以上の文字 ('a' ~ 'z' または 'A' ~ 'Z') です。 この形式に一致しない最初の文字でスキャンが停止します。 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' の文字が出現すると、スキャンは停止されます。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
strtoimax 、 _strtoimax_l 、 wcstoimax 、 _wcstoimax_l |
<inttypes.h> |
互換性の詳細については、「 Compatibility」を参照してください。
関連項目
データ変換
ロケール
localeconv
setlocale
, _wsetlocale
文字列から数値の関数
strtod
、 _strtod_l
、 wcstod
、 _wcstod_l
strtol
、 wcstol
、 _strtol_l
、 _wcstol_l
strtoul
、 _strtoul_l
、 wcstoul
、 _wcstoul_l
strtoumax
、 _strtoumax_l
、 wcstoumax
、 _wcstoumax_l
atof
、 _atof_l
、 _wtof
、 _wtof_l