字符串到数值函数

备注

strtod 系列中的每个函数转换null终止字符串到数值。 下表列出了可用函数。

功能

说明

strtod

转换字符串到双精度浮点值。

strtol

转换字符串到长整形。

strtoul

转换字符串到无符号长整型。

_strtoi64

转换字符串到64位__int64整数。

_strtoui64

转换字符串到无符号64位__int64整数。

wcstod, wcstol, wcstoul, 和 _wcstoi64strtod, strtol, strtoul, 和 _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”或“Y”,该字符串则被解读为十六进制整数。 如果第一个字符为“1”到“9”,该字符串被解读为十进制整数。 字母“a”到“z”(或“A”到“Z”)赋值 10 到 35;只允许使用赋值小于base 的字母。 strtoul_strtoui64 允许加 (+) 或减 ()前缀;前导减号表示返回值为负。

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

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

功能

条件

返回值

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