_strtoui64、_wcstoui64、_strtoui64_l、_wcstoui64_l
文字列を unsigned __int64 型の値に変換します。
unsigned __int64 _strtoui64(
const char *nptr,
char **endptr,
int base
);
unsigned __int64 _wcstoui64(
const wchar_t *nptr,
wchar_t **endptr,
int base
);
unsigned __int64 _strtoui64_l(
const char *nptr,
char **endptr,
int base,
_locale_t locale
);
unsigned __int64 _wcstoui64(
const wchar_t *nptr,
wchar_t **endptr,
int base,
_locale_t locale
);
パラメーター
nptr
NULL で終わる変換対象の文字列。endptr
スキャンの終了位置を示す文字へのポインター。base
使用する基数。locale
使用するロケール。
戻り値
_strtoui64 関数は、オーバーフローの場合は _UI64_MAX を返し、それ以外の場合は nptr 文字列が表す値を返します。 strtoui64 関数は、変換を実行できない場合に 0 を返します。
_UI64_MAX は、LIMITS.H で定義されています。
nptr が NULL の場合、または base が 0 以外で、2 未満または 36 を超える場合、errno は EINVAL に設定されます。
戻り値の詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_strtoui64 関数は、nptr を unsigned__int64 に変換します。 _wcstoui64 関数は、_strtoui64 関数のワイド文字バージョンで、nptr 引数はワイド文字列です。 それ以外の動作については、これらの関数は同じです。
どちらの関数も、数値の一部として認識できない文字を最初に見つけた時点で、文字列 nptr の読み取りを終了します。 文字列の終端の null 文字 (\0)、または base 以上の数値文字が最初に出現した位置でもスキャンを停止します。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tcstoui64 |
_strtoui64 |
_strtoui64 |
_wstrtoui64 |
_tcstoui64_l |
_strtoui64_l |
_strtoui64_l |
_wstrtoui64_l |
現在のロケールの LC_NUMERIC カテゴリの設定に基づいて nptr の小数点文字が認識されます。詳細については、setlocale 関数の解説を参照してください。 これらのうち _l サフィックスが付いていない関数では、現在のロケールを使用します。_strtoui64_l と _wcstoui64_l は、渡されたロケールを使用することを除いて _l サフィックスが付いていない対応する関数と同じです。 詳細については、「ロケール」を参照してください。
endptr が NULL 以外の場合は、スキャンを停止させた文字へのポインターを endptr が指す位置に格納します。 変換できなかった場合 (有効な数字が見つからなかった場合、または無効な base を指定した場合) は、nptr の値を endptr が指す位置に格納します。
_strtoui64 は、nptr が次の形式の文字列を指すものと想定します。
[whitespace] [{+ |–}] [0 [{ x |X }]] [digits]
whitespace は、スペースまたはタブ文字のことであり、無視されます。digits は 1 つ以上の 10 進数字です。 この形式に一致しない文字を見つけるとスキャンを停止します。 base が 2 と 36 の間の場合は、基数として使用されます。 base が 0 の場合は、nptr が指す文字列の先頭の文字で基数を判定します。 最初の文字が 0 で、2 番目の文字が x または X 以外であると、文字列は 8 進整数と解釈されます。それ以外の場合は、10 進数と解釈されます。 最初の文字が 0 で、2 番目の文字が x または X である場合、文字列は 16 進整数と解釈されます。 最初の文字が 1 から 9 までの数値であると、文字列は 10 進整数と解釈されます。 a ~ z (または A ~ Z) の文字は、10 ~ 35 の値に割り当てます。数値に使用できる文字は、base より小さい値が割り当てられている文字だけです。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_strtoui64 |
<stdlib.h> |
_wcstoui64 |
<stdlib.h> または <wchar.h> |
_strtoui64_l |
<stdlib.h> |
_wcstoui64_l |
<stdlib.h> または <wchar.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// crt_strtoui64.c
#include <stdio.h>
unsigned __int64 atoui64(const char *szUnsignedInt) {
return _strtoui64(szUnsignedInt, NULL, 10);
}
int main() {
unsigned __int64 u = atoui64("18446744073709551615");
printf( "u = %I64u\n", u );
}
参照
参照
strtod、_strtod_l、wcstod、_wcstod_l