wcstol
wcstol, wcstoll
在头文件 | | |
---|---|---|
long wcstol(const wchar_t * str,wchar_t ** str_end,int base); | | (自C95以来) |
long long wcstoll(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
于成功的内容。如果转换后的值脱离的相应的返回类型的范围时,发生错误的范围和LONG_MAX
,LONG_MIN
,LLONG_MAX
或LLONG_MIN
返回。如果不能执行转换,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 (long i = wcstol(p, &end, 10
p != end;
i = wcstol(p, &end, 10))
{
printf("'%.*ls' -> ", (int)(end-p), p
p = end;
if (errno == ERANGE){
printf("range error, got "
errno = 0;
}
printf("%ld\n", i
}
}
输出:
Parsing L'10 200000000000000000000000000000 30 -40':
'10' -> 10
' 200000000000000000000000000000' -> range error, got 9223372036854775807
' 30' -> 30
' -40' -> -40
参考
- C11标准(ISO/IEC 9899:2011):
另请参阅
strtolstrtoll(C99) | 将字节字符串转换为整数值(函数) |
---|---|
wcstoulwcstoull(C95)(C99) | 将宽字符串转换为无符号整数值(函数) |
| 用于wcstol,wcstoll |的C ++文档