wcstol 或 wcstol 子例程

用途

将宽字符字符串转换为长整数表示法。

标准 C 库 (libc.a)

语法

#include <stdlib.h>
long int wcstol ( Nptr Endptr Base)
const wchar_t *Nptr;
wchar_t **Endptr;
int Base;
long long int wcstoll (*Nptr, **Endptr, Base)
const wchar_t *Nptr;
wchar_t **Endptr:
int Base

描述

沃茨托尔 子例程将宽字符字符串转换为长整数表示法。 沃茨托勒 子例程将宽字符字符串转换为长整型整数表示法。

  1. 空格宽字符代码的初始 (可能为空) 序列 (如 伊斯沃空间 子例程所指定)
  2. 被解释为整数并在由 基本 参数确定的基数中表示的主题序列
  3. 包含一个或多个未识别的宽字符代码的最终宽字符字符串,包括输入宽字符字符串的终止宽字符空值

如果可能,那么会将主体集转换为整数,并返回结果。

基本 参数可以采用下列值: 0 到 9 ,或者 a (或 A) 到 z (或 Z)。 基础值可能有 36 个值。 如果基值为 0 ,那么主题字符串的期望格式为十进制,八进制或十六进制常量,其中任何值前面都可以加上 + (加号) 或-(减号)。 十进制常量以非零数字开头,并由一系列十进制数字组成。 八进制常量由前缀 0 组成 (可选地 0 数字 0 到 7 的序列)。 十六进制常量定义为前缀 0x (或 0X) ,后跟十进制数字和字母 a (或 A) 到 f (或 F) 的序列,值范围从 10 (对于 a 或 A) 到 15 (对于 f 或 F)。

如果基值在 2 到 36 之间,那么主题序列的期望形式是一个字母和数字序列,表示 基本 参数指定的基数中的整数,可选地以 + 或-作为前缀,但不包括整数后缀。 字母 a (或 A) 到 z (或 Z) 被指定为 10 到 35 的值。 只允许使用值小于基本值的字母。 如果 base 值为 16 ,那么字符 0x 或 0X 可以选择性地位于符号后面的字母或数字的序列前 (如果存在)。

对宽字符字符串进行解析以跳过初始空间字符 (由 伊斯沃空间 子例程确定)。 任何非空格字符表示主体集字符串的开头,该字符串可能在 基本 参数指定的基数中形成整数。 主题序列定义为最长的初始子串,该子串是期望格式的长整数。 任何不符合此格式的字符从调用 沃茨托尔沃茨托勒 子例程返回到 恩德普特尔 参数所指向的宽字符字符串的最后部分开始。

参数

描述
Nptr 包含一个指针,该指针指向要转换为长整数的宽字符字符串。
恩德普特尔 包含一个指针,该指针指向 Nptr 参数字符串中的位置,在该位置找到的宽字符不是有效字符。
基本 指定在其中解释字符的基数。

返回值

如果找到期望的格式,那么 沃茨托尔沃茨托勒 子例程将返回长整型或长整型整数的转换值。 如果无法执行任何转换,那么 0 返回值 0。 如果转换后的值在可表示值的范围之外,那么对于 沃茨托尔 子例程会返回 最大 LONG_MAXLONG_MIN ,而对于 沃茨托勒 子例程会返回 LONG_MAXLONG_MIN (根据值的符号)。 错误号 的值将设置为 ERANGE。 如果不支持由 基本 参数指定的基本值,那么将返回 EINVAL

如果主题序列具有期望的形式,那么会将其解释为相应基数中的整数常量。 如果 恩德普特尔 参数不是空指针,那么指向最终字符串的指针将存储在该参数中。

如果主题序列为空或没有有效的表单,那么不会执行转换。 如果 Nptr 参数的值不是空指针,那么该参数将存储在 恩德普特尔 参数中。

因为 0 , LONG_MIN最大 LONG_MAX (对于 沃茨托尔) 和 LONG_MIN,以及 LONG_MAX (对于 沃茨托勒) 在发生错误时返回,并且如果 沃茨托尔沃茨托勒 子例程成功,那么应用程序应该在调用任一子例程之前将 错误号 全局变量 0 为 0 ,并在返回后检查 错误号 。 如果 错误号 全局值已更改,那么将发生错误。

示例

要将宽字符字符串转换为带符号的长整数,请使用以下代码:

#include <stdlib.h>
#include <locale.h>
#include <errno.h>
main()
{
        wchar_t *WCString, *endptr;
        long int retval;
        (void)setlocale(LC_ALL, "");
        /**Set errno to 0 so a failure for wcstol can be
        **detected */
        errno=0;
        /*
        **Let WCString point to a wide character null terminated
        ** string containing a signed long integer value
        ** 
                */retval = wcstol ( WCString &endptr, 0 );
        /* Check errno, if it is non-zero, wcstol failed */
        if (errno != 0) {
                /*Error handling*/
        }
        else if (&WCString == endptr) {
                /* No conversion could be performed */
                /* Handle this case accordingly. */
        }
        /* retval contains long integer */
}