wcstoul
wcstoul, wcstoull
在头文件 | | |
---|---|---|
unsigned long wcstoul(const wchar_t * str,wchar_t ** str_end,int base); | | (自C95以来) |
unsigned long long wcstoull(const wchar_t * str,wchar_t ** str_end,int base); | | (自C99以来) |
解释由指向的宽字符串中的无符号整数值str
。
放弃任何空白字符(通过调用标识isspace()
),直到找到第一个非空白字符,然后接收尽可能多的字符以形成有效的base-n
(其中n = base)无符号整数表示并将它们转换为整数值。有效的无符号整数值由以下部分组成:
- (可选)加号或减号
base的有效值集合是{0,2,3,...,36}。base-2整数的有效数字集合是{0,1
},对于base-3整数是{0,1,2
},依此类推。对于大于等于的基数10
,有效数字包含字母字符,从Aa
基数为11的整数开始,到Zz
基数为36的整数。字符的情况被忽略。
其他数字格式可以被当前安装的C接受locale
。
如果基数的值是0
,数字基地是自动检测:如果前缀是0
,基地是八进制的,如果前缀是0x
或0X
,基地是十六进制,否则基数是十进制。
如果减号是输入序列的一部分,则根据数字序列计算的数值将被否定,如同使用无符号整数环绕规则的结果类型中的一元减号一样。
这些函数将指向的指针设置为指向str_end
最后解释的字符后面的宽字符。如果str_end
是NULL
,它被忽略。
参数
str | - | 指向要解释的以空字符结尾的宽字符串的指针 |
---|---|---|
str_end | - | 指向宽字符的指针。 |
base | - | 解释的整数值的基数 |
返回值
整数值对应str
于成功的内容。如果转换后的值超出了相应返回类型的范围,则会发生范围错误并返回ULONG_MAX
或ULLONG_MAX
。如果不能执行转换,
则返回0
。
示例
#include <stdio.h>
#include <errno.h>
#include <wchar.h>
int main(void)
{
const wchar_t *p = L"10 200000000000000000000000000000 30 40";
printf("Parsing L'%ls':\n", p
wchar_t *end;
for (unsigned long i = wcstoul(p, &end, 10
p != end;
i = wcstoul(p, &end, 10))
{
printf("'%.*ls' -> ", (int)(end-p), p
p = end;
if (errno == ERANGE){
printf("range error, got "
errno = 0;
}
printf("%lu\n", i
}
}
输出:
Parsing '10 200000000000000000000000000000 30 40':
'10' -> 10
' 200000000000000000000000000000' -> range error, got 18446744073709551615
' 30' -> 30
' 40' -> 40
参考
- C11标准(ISO/IEC 9899:2011):
另请参阅
strtoul strtoull(C99) | 将字节字符串转换为无符号整数值(函数) |
---|---|
wcstolwcstoll(C95)(C99) | 将宽字符串转换为整数值(函数) |
| wcstoul,wcstoull |的C ++文档