_strtoui64
, _wcstoui64
, _strtoui64_l
, _wcstoui64_l
文字列を unsigned __int64
値に変換します。
構文
unsigned __int64 _strtoui64(
const char *strSource,
char **endptr,
int base
);
unsigned __int64 _wcstoui64(
const wchar_t *strSource,
wchar_t **endptr,
int base
);
unsigned __int64 _strtoui64_l(
const char *strSource,
char **endptr,
int base,
_locale_t locale
);
unsigned __int64 _wcstoui64_l(
const wchar_t *strSource,
wchar_t **endptr,
int base,
_locale_t locale
);
パラメーター
strSource
NULL で終わる変換対象の文字列。
endptr
スキャンの終了位置を示す文字へのポインター。
base
使用する基数。
locale
使用するロケール。
戻り値
_strtoui64
は、オーバーフローを引き起こす場合を除き、文字列 strSource
で表現される値を返します。オーバーフローの場合は、_UI64_MAX
を返します。 変換を実行できない場合、_strtoui64
は 0 を返します。
_UI64_MAX
で定義されています LIMITS.H
。
strSource
が NULL
または base
がゼロ以外で 2 未満または 36 を超える場合、errno
は EINVAL
に設定されます。
リターン コードの詳細については、「、、、、_sys_errlist
、」_sys_nerr
を参照してくださいerrno
。 _doserrno
解説
_strtoui64
関数は、strSource
を unsigned __int64
に変換します。 _wcstoui64
関数は、_strtoui64
関数のワイド文字バージョンで、strSource
引数はワイド文字列です。 それ以外では、これらの関数の動作は同じです。
どちらの関数も、数値の一部として認識できない最初の文字で文字列 strSource
の読み取りを停止します。 終端の null 文字を使用するか、または最初の数値が次の値以上 base
の場合があります。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 これを変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H ルーチン |
_UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tcstoui64 |
_strtoui64 |
_strtoui64 |
_wcstoui64 |
_tcstoui64_l |
_strtoui64_l |
_strtoui64_l |
_wcstoui64_l |
現在のロケールの LC_NUMERIC
カテゴリ設定によって、基数文字 strSource
の認識が決定されます。詳細については、「.」を参照してください setlocale
。 _l
サフィックスが付いていない関数は、現在のロケールを使用します。_strtoui64_l
および _wcstoui64_l
は、渡されたロケールを使用することを除いて、_l
サフィックスが付いていない対応する関数と同じです。 詳細については、「 Locale」を参照してください。
endptr
が NULL
以外の場合は、スキャンを停止させた文字へのポインターを endptr
が指す位置に格納します。 変換できなかった場合 (有効な数字が見つからなかった場合、または無効な base を指定した場合) は、strSource
の値を endptr
が指す位置に格納します。
_strtoui64
は、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' の文字が出現すると、スキャンは停止されます。
必要条件
機能 | 必須ヘッダー |
---|---|
_strtoui64 |
<stdlib.h> |
_wcstoui64 |
<stdlib.h> または <wchar.h> |
_strtoui64_l |
<stdlib.h> |
_wcstoui64_l |
<stdlib.h> または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// 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 );
}
u = 18446744073709551615
関連項目
データ変換
ロケール
localeconv
setlocale
, _wsetlocale
文字列から数値の関数
strtod
, _strtod_l
, wcstod
, _wcstod_l
strtoul
, _strtoul_l
, wcstoul
, _wcstoul_l
atof
, _atof_l
, _wtof
, _wtof_l
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示