wcstol ()-wcstoll ()- 将宽字符串转换为长整型和长整型整数
格式 (wcstol())
#include <wchar.h>
long int wcstol(const wchar_t *nptr, wchar_t **endptr, int base);格式 (wcstoll())
#include <wchar.h>
long long int wcstoll(const wchar_t *nptr, wchar_t **endptr, int base);语言级别
ANSI
线程安全
是
语言环境敏感
如果在编译命令中指定了 LOCALETYPE (*LOCALE) ,那么这些函数的行为可能会受到当前语言环境的 LC_CTYPE 类别的影响。 如果在编译命令上指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,那么这些函数的行为也可能受当前语言环境的 LC_UNI_CTYPE 类别影响。 当在编译命令上指定 LOCALETYPE (*CLD) 时,这些函数不可用。 有关更多信息,请参阅 了解 CCSID 和语言环境。
宽字符函数
有关更多信息,请参阅 宽字符 。
描述
wcstol() 函数将 nptr 指向的宽字符字符串的初始部分转换为长整数值。 nptr 参数指向可以解释为 long int 类型的数字值的宽字符序列。 wcstol() 函数在无法识别为数字一部分的第一个宽字符处停止读取字符串。 此字符可以是字符串末尾的 wchar_t 空字符。 结束字符也可以是大于或等于基本字符的第一个数字字符。
wcstoll() 函数将宽字符字符串转换为长整型整数。 解析宽字符字符串以跳过初始空格字符 (由 iswspace 函数确定)。 任何非空格字符都表示在 base 参数指定的基数中可能形成长整型整数的主题字符串的开头。 主题序列定义为作为期望形式的长整型的最长初始子串。
如果 endptr 参数的值不为空,那么结束扫描的字符的指针将存储在 endptr中。 如果不能形成长整型整数,那么 endptr 参数的值将设置为 nptr 参数的值。
如果 base 参数是介于 2 与 36之间的值,那么主体序列的期望格式是表示长整数的字母和数字序列,其基数由 base 参数指定。 此序列 (可选) 前面有一个正 (+) 或负 (-) 符号。 从 a (或 A) 到 z (或 Z) (含) 的字母将值 10 归为 35; 仅允许其归因值小于 base 参数的字母。 如果 base 参数的值为 16,那么字符 0x 或 0X (可选) 在字母和数字序列之前,后跟正 (+) 或负 (-) 符号 (如果存在)。
如果 base 参数的值为 0,那么字符串将确定基数。 因此,在可选前导符号之后,前导 0 指示八进制转换,前导 0x 或 0X 指示十六进制转换。
返回值
wcstol() 函数返回转换后的长整数值。 如果无法执行任何转换,那么 wcstol() 函数将返回 0。 如果正确的值超出可表示值的范围,那么 wcstol() 函数将返回 LONG_MAX 或 LONG_MIN (根据值的符号) ,并将 errno 设置为 ERANGE。 如果字符串 nptr 指向的字符串为空或没有期望的格式,那么不会执行任何转换,并且 nptr 的值存储在 endptr指向的对象中,前提是 endptr 不是空指针。
成功完成后, wcstoll() 函数将返回转换后的值。 如果无法执行转换,那么将返回 0 ,并且会设置 errno 全局变量以指示错误。 如果正确的值超出可表示值的范围,那么 wcstoll() 函数将返回值 LONG_LONG_MAX 或 LONG_LONG_LONG_MIN。
errno 的值可以设置为 ERANGE (范围错误) 或 EINVAL (无效参数)。
示例
wcstol() 函数将宽字符字符串 wcs 转换为长整数值。#include <stdio.h>
#include <wchar.h>
int main(void)
{
wchar_t *wcs = L"10110134932";
wchar_t *stopwcs;
long l;
int base;
printf("wcs = \"%ls\"\n", wcs);
for (base=2; base<=8; base*=2) {
l = wcstol(wcs, &stopwcs, base);
printf(" wcstol = %ld\n"
" Stopped scan at \"%ls\"\n\n", l, stopwcs);
}
return 0;
/*******************************************************
The output should be similar to:
wcs = "10110134932"
wcstol = 45
Stopped scan at "34932"
wcstol = 4423
Stopped scan at "4932"
wcstol = 2134108
Stopped scan at "932"
*******************************************************/
}相关信息
- strtod ()-strtof ()-str被告 ()-将字符串转换为 Double , Float 和 Long Double
- strtod32()- strtod64()- strtod128()-将字符串转换为十进制浮点数
- strtol ()-strtol()-将字符串转换为长整型和长整型整数
- strtoul ()-strtoull ()-将字符串转换为无符号长整型和无符号长整型整数
- wcstod ()-wcstof ()-wcstold ()-将宽字符字符串转换为 Double , Float 和 Long Double
- wcstod32()- wcstod64()- wcstod128()-将宽字符字符串转换为十进制浮点
- wcstoul ()-wcstoull ()-将宽字符字符串转换为无符号长整数和无符号长整数
- <wchar.h>