将字符串转换为无符号 __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返回字符串 nptr中表示的值, 除非表示形式导致溢出, 在这种情况下它将返回 _UI64_MAX.如果不能执行转换,_strtoui64将返回0。
_UI64_MAX 在 LIMITS.H. 中定义。
如果 nptr 为 NULL 或者 base 非零和小于 2 或大于 36,则将 errno 设置为 EINVAL。
有关这些内容的详细信息以及其他返回代码,请参见 _doserrno、errno、_sys_errlist 和 _sys_nerr。
备注
_strtoui64函数将 nptr 转换为 unsigned __int64. _wcstoui64 是 _strtoui64 的宽字符版本;其 nptr 参数是宽字符字符串。 否则这些函数具有相同的行为。
当他们不能识别的第一个数字字符出现时,函数都停止读入字符串 nptr。 这可能是终止空字符,也可能是大于或等于 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 指向的位置。 如果没有转换(未找到有效数字或指定了无效基础),nptr 的值存储在 endptr 指向的位置。
_strtoui64 希望 nptr 指向以下格式的字符串:
[whitespace] [{+ | –}] [0 [{ x | X }]] [digits]
被忽略的是whitespace 可能包含空格和制表符;digits 是一个或多个十进制数字。 不符合此窗体的首个字符将终止扫描。 如果 base 在 2 和 36 之间,则将它用作数字的基础。 如果 base 是 0,则通过使用 nptr 所指向的初始字符串字符确定基项。 如果首个字符为0,而第二个字符不为“X”或“Y”,该字符串则被翻译成八进制整数。 如果首个字符为“0”,而第二个字符为“X”或“Y”,该字符串则被解读为十六进制整数。 如果第一个字符为“1”到“9”,该字符串被解读为十进制整数。 字母“a”到“z”(或“A”到“Z”)赋值 10 到 35;只允许使用赋值小于 base 的字母。 在基项范围外的第一个字符将终止扫描。 例如,如果 base 为 0 且扫描的第一个字符也为“0”,则会假定为一个八进制整数且字符“8”或“9”将会终止扫描。
要求
例程 |
必需的标头 |
---|---|
_strtoui64 |
<stdlib.h> |
_wcstoui64 |
<stdlib.h> 或 <wchar.h> |
_strtoui64_l |
<stdlib.h> |
_wcstoui64_l |
<stdlib.h> 或 <wchar.h> |
有关其他兼容性信息,请参见“简介”中的兼容性。
示例
// 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