对数值功能的字符串

备注

strtod 系列的每个函数以 NULL 结尾的字符串转换为数值。 可用的功能在下表中列出。

功能

说明

strtod

对于双精度浮点值的转换字符串

strtol

对于长的整数的转换字符串

strtoul

为无符号 long 整数的转换字符串

_strtoi64

对于 64 位 __int64 整数的转换字符串

_strtoui64

为无符号 64 位整数 __int64 的转换字符串

wcstodwcstolwcstoul_wcstoi64 分别为 strtodstrtolstrtoul_strtoi64的宽字符版本,即。 这些宽字符函数中的字符串参数是宽字符字符串;每个功能否则方法的行为与其单字节字符副本。

strtod 函数采用两个参数:第一个是输入字符串,并且,第二到结束字符的指针转换过程。 使用时,的数基在转换过程,strtolstrtoul_strtoi64_strtoui64 获取第三个参数。

输入字符串是可被解释为指定类型的一个数值字符的序列。 每个功能停止读取为数字的一部分,它无法识别的字符串在第一个字符。 这可能是终止 null 字符)。 为 strtolstrtoul_strtoi64_strtoui64,此终止字符也可能是第一个数字字符大于或等于用户提供的数基。

如果对结束转换字符的用户提供的指针未设置为 NULL 在调用时,对停止扫描将存储在该处字符的指针。 如果转换不能执行 (未找到有效的数值或无效的基本指定了),字符串指针的值存储在该地址。

strtod 需要以下格式的字符串:

空白符号[] [] [digits] [**.**digits][{d | D | e |E}] [符号digits]

空白 可以包含空格或制表符,将忽略; 符号 加号 (+) 或减号 ();并 digits 是一个或多个十进制数字。 如果数字不在基数字符出现之前,至少一个必须在基数字符后面。 十进制数字可由指数按照,包括一个表示字母 (dDe或 E) 和一个可选择符号整数。 如果指数部件和基数字符未出现,基数字符假定按照该字符串的最后一位数。 不适合此窗体停止扫描的第一个字符。

strtolstrtoul_strtoi64_strtoui64 函数需要以下格式的字符串:

空白[] [{+ |}] [0 [{ x |x }] []digits]

如果基参数在 2 和 36 之间,则将它作为该数字的基础。 如果该值为 0,初始字符对由结束转换指针用于确定基础。 如果第一个字符是 0,第二个字符不是 " x " 或 " X ",字符串被解释为一个八进制整数;否则,它将被解释为十进制数字。 如果第一个字符为 “0 ",第二个字符是 " x " 或 " X ",字符串被解释为十六进制整数。 如果第一个字符为 " 1 " 到 " 9 ",字符串被解释为十进制整数。 字母 " a " 到 “z (或 " A " 到 “Z) 赋值 10 到 35;与 基础 进行值小于只允许的字母。 strtoul_strtoui64 允许加号 (+) 或减号 () 符号前缀;生成一个减号指示返回值对。

输出值受设置 LC_NUMERIC 类设置的影响区域设置;请参见 setlocale 有关更多信息。 这些功能的版本不 _l 后缀为该区域设置相关的行为使用当前区域设置;与 _l 后缀的版本相同,只不过它们使用传入的区域设置参数。

当这些函数返回的值将导致溢出或下溢时,或者,在转换不可能,特殊情况返回值如下所示:

功能

Condition

返回的值

strtod

溢出

+/- HUGE_VAL

strtod

下溢或不转换

0

strtol

+ 溢出

LONG_MAX

strtol

- 溢出

LONG_MIN

strtol

下溢或不转换

0

_strtoi64

+ 溢出

_I64_MAX

_strtoi64

- 溢出

_I64_MIN

_strtoi64

不转换

0

_strtoui64

溢出

_UI64_MAX

_strtoui64

不转换

0

_I64_MAX, _I64_MIN_UI64_MAX 在 LIMITS.H. 定义。

wcstodwcstolwcstoul_wcstoi64_wcstoui64 分别为 strtodstrtolstrtoul_strtoi64_strtoui64的宽字符版本,;对于结束转换参数的指针这些宽字符函数中的每一个是宽字符字符串。 否则,这些宽字符函数中的每个方法的行为与其单字节字符副本。

请参见

参考

数据转换

区域设置

多字节字符序列的说明

浮点支持

atof, _atof_l, _wtof, _wtof_l