_strtoui64, _wcstoui64, _strtoui64_l, _wcstoui64_l
将字符串转换为无符号 __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 的两个函数终止在作为数字的一部分,因此无法识别的第一个字符。 这可能是终止 null 字符),也可能是第一个数字字符大于或等于 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 " 或 " X ",字符串被解释为一个八进制整数;否则,它将被解释为十进制数字。 如果第一个字符为 “0 ",第二个字符是 " x " 或 " X ",字符串被解释为十六进制整数。 如果第一个字符为 " 1 " 到 " 9 ",字符串被解释为十进制整数。 字母 " 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 |
有关其他的兼容性信息,请参见中介绍的 兼容性 。
示例
// 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