wcstoul ()-wcstoull ()- 将宽字符字符串转换为无符号长整数和无符号长整数

格式 (wcstoul())

#include <wchar.h>
unsigned long int wcstoul(const wchar_t *nptr, wchar_t **endptr, int base);

格式 (wcstoull())

#include <wchar.h>
unsigned long long int wcstoull(const wchar_t *nptr, wchar_t **endptr, int base);

语言级别

ANSI

线程安全

语言环境敏感

如果在编译命令中指定了 LOCALETYPE (*LOCALE) ,那么这些函数的行为可能会受到当前语言环境的 LC_CTYPE 类别的影响。 如果在编译命令上指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,那么这些函数的行为也可能受当前语言环境的 LC_UNI_CTYPE 类别影响。 当在编译命令上指定 LOCALETYPE (*CLD) 时,这些函数不可用。 有关更多信息,请参阅 了解 CCSID 和语言环境

宽字符函数

有关更多信息,请参阅 宽字符

描述

wcstoul() 函数将 nptr 指向的宽字符字符串的初始部分转换为无符号长整数值。 nptr 参数指向可以解释为无符号长整型的数字值的一系列宽字符。 wcstoul() 函数在无法识别为数字一部分的第一个宽字符处停止读取字符串。 此字符可以是字符串末尾的 wchar_t 空字符。 结束字符也可以是大于或等于基本字符的第一个数字字符。

wcstoull() 函数将宽字符字符串转换为无符号长整型整数。 解析宽字符字符串以跳过初始空格字符 (由 iswspace 函数确定)。 任何非空格字符表示在 base 参数指定的基数中可能形成无符号长整型整型的主题字符串的开始。 主题序列定义为最长的初始子串,该子串是期望形式的无符号长整型。

如果 endptr 参数的值不为空,那么结束扫描的字符的指针将存储在 endptr中。 如果无法形成无符号长整型整数,那么 endptr 参数的值将设置为 nptr 参数的值。

如果 base 参数是介于 236之间的值,那么主体序列的期望格式是表示无符号长整数的字母和数字序列,其基数由 base 参数指定。 此序列 (可选) 前面有一个正 (+) 或负 (-) 符号。 从 a (或 A) 到 z (或 Z) (含) 的字母将值 10 归为 35; 仅允许其归因值小于 base 参数的字母。 如果 base 参数的值为 16,那么字符 0x0X (可选) 在字母和数字序列之前,后跟正 (+) 或负 (-) 符号 (如果存在)。

如果 base 参数的值为 0,那么字符串将确定基数。 因此,在可选前导符号之后,前导 0 指示八进制转换,前导 0x0X 指示十六进制转换。

errno 的值可以设置为 EINVAL (endptr 为空,未找到任何数字,或者基数无效) 或 ERANGE (转换后的值超出范围)。

返回值

wcstoul() 函数返回转换后的无符号长整型整数值。 如果无法执行任何转换,那么 wcstoul() 函数将返回 0。 如果正确的值超出可表示值的范围,那么 wcstoul() 函数将返回 ULONG_MAX 并将 errno 设置为 ERANGE。 如果字符串 nptr 指向的字符串为空或没有期望的格式,那么不会执行任何转换,并且 nptr 的值存储在 endptr指向的对象中,前提是 endptr 不是空指针。

成功完成后, wcstoull() 函数将返回转换后的值。 如果无法执行转换,那么将返回 0 ,并且会设置 errno 全局变量以指示错误。 如果正确的值超出可表示值的范围,那么 wcstoull() 函数将返回值 ULONG_LONG_MAX。

示例

此示例使用 wcstoul() 函数将字符串 wcs 转换为无符号长整数值。
#include <stdio.h>
#include <wchar.h>
 
#define BASE 2
 
int main(void)
{
   wchar_t *wcs = L"1000e13 camels";
   wchar_t *endptr;
   unsigned long int answer;
 
   answer = wcstoul(wcs, &endptr, BASE);
   printf("The input wide string used: `%ls`\n"
          "The unsigned long int produced: %lu\n"
          "The substring of the input wide string that was not"
          " converted to unsigned long: `%ls`\n", wcs, answer, endptr);
   return 0; 
}
 
   /*********************************************************************
      The output should be similar to:
 
      The input wide string used:  1000e13 camels
      The unsigned long int produced: 8
      The substring of the input wide string that was not converted to
      unsigned long:  e13 camels
   *********************************************************************/

相关信息