Funciones de conversión de valores de cadena en valores numéricos

Comentarios

Cada función de la familia de strtod convierte una cadena terminada en null a un valor numérico. Las funciones disponibles se muestran en la tabla siguiente.

Función

Descripción

strtod

Cadena de convierte el valor de doble precisión de punto flotante

strtol

Cadena convert el entero largo

strtoul

Cadena convert el entero unsigned long

_strtoi64

Cadena de convertir en un entero de 64 bits de __int64

_strtoui64

Cadena de convertir en un entero de 64 bits sin signo de __int64

wcstod, wcstol, wcstoul, y _wcstoi64 son versiones de caracteres anchos de strtod, de strtol, de strtoul, y de _strtoi64, respectivamente. El argumento de cadena a cada una de estas funciones de carácter ancho es una cadena de caracteres; cada función se comporta idénticamente a su equivalente de solo-byte- carácter de otra manera.

La función de strtod toma dos argumentos: el primero es la cadena de entrada, y la segunda un puntero al carácter que finaliza el proceso de conversión. strtol, strtoul, _strtoi64 y _strtoui64 tienen un tercer argumento como base de número el uso en el proceso de conversión.

La cadena de entrada es una secuencia de caracteres que se pueden interpretar como valor numérico del tipo especificado. Cada función finaliza la lectura de la cadena del primer carácter que no puede reconocer como parte de un número. Este puede ser el carácter null final. Para strtol, strtoul, _strtoi64, y _strtoui64, este carácter de terminación también puede ser el primer carácter numérico es mayor o igual que la base de número usuario- proporcionada.

Si el puntero usuario- proporcionado un carácter de la FIN-de- conversión no se establece en nulo en tiempo de llamada, un puntero al carácter que se detuvo el análisis se almacenará allí en su lugar. Si ninguna conversión se puede realizar (no se encontraron dígitos válidos o base no válida se especificó), el valor del puntero de la cadena se almacena en esa dirección.

strtod cuenta con una cadena con el formato siguiente:

[espacio en blanco] [sign] [digits] [**.**digits] [{x | D | e | E} [sign]digits]

Un espacio en blanco puede ser el espacio o caracteres de tabulación, se omiten que; el signo es más (+) o menos (); y digits es uno o más dígitos decimales. Si no aparece ningún dígito antes del carácter de base, debe aparecer al menos uno después del carácter de base. Los dígitos decimales pueden ir seguidos por un exponente, formada por una letra preliminar (x, L, h, o E) y un entero opcionalmente firmado. Si no aparece una parte del exponente ni un carácter de base, se supondrá que el carácter de base sigue el último dígito de la cadena. El primer carácter que no se ajusta a este formato detiene el análisis.

strtol, strtoul, _strtoi64, y las funciones de _strtoui64 esperan una cadena con el formato siguiente:

[espacio en blanco] [{+ | }] [0 [{ x | X }]] [digits]

Si el argumento base está entre 2 y 36, se utiliza como base del número. Si es 0, los caracteres iniciales que hace referencia el puntero de la FIN-de- conversión se utilizan para determinar la base. Si el primer carácter es 0 y el segundo carácter no es “x” o “X”, la cadena se interpreta como entero octal; si no, se interpreta como un número decimal. Si el primer carácter es 0 y el segundo carácter es 'x' o 'X', la cadena se interpreta como entero hexadecimal. Si el primer carácter está entre 1 y 9, la cadena se interpreta como entero decimal. Las letras” a la “z” (o “A” a la “z ") se asignan los valores 10 a 35; sólo las letras cuyo asignaban valores son menos que la base se permiten. strtoul y _strtoui64 permiten especificar más (+) o menos prefijo de signo (de**–**); un signo menos principal indica que el valor devuelto se negado.

El valor de salida se ve afectado por el valor de la categoría LC_NUMERIC de la configuración regional; vea setlocale para obtener más información. Las versiones de estas funciones sin el sufijo _l usan la configuración regional actual de su comportamiento dependiente de la configuración regional; las versiones con el sufijo _l son idénticas salvo que usan el parámetro de configuración regional que se pasa.

Cuando funciona el valor devuelto por estos provocaría un desbordamiento o un subdesbordamiento, o cuando la conversión no son valores de posible caso, especial cambian como se muestra a continuación:

Función

Condition

Valor devuelto

strtod

Desbordamiento

+/- HUGE_VAL

strtod

Subdesbordamiento o ninguna conversión

0

strtol

+ Desbordamiento

LONG_MAX

strtol

- Desbordamiento

LONG_MIN

strtol

Subdesbordamiento o ninguna conversión

0

_strtoi64

+ Desbordamiento

_I64_MAX

_strtoi64

- Desbordamiento

_I64_MIN

_strtoi64

Ninguna conversión

0

_strtoui64

Desbordamiento

_UI64_MAX

_strtoui64

Ninguna conversión

0

_I64_MAX, _I64_MIN, y _UI64_MAX se definen en LIMITS.H.

wcstod, wcstol, wcstoul, _wcstoi64, y _wcstoui64 son versiones de caracteres anchos de strtod, de strtol, de strtoul, de _strtoi64, y de _strtoui64, respectivamente; el puntero a un argumento de la FIN-de- conversión a cada una de estas funciones de carácter ancho es una cadena de caracteres. Si no, cada una de estas funciones de carácter ancho se comporta idénticamente a su equivalente de solo-byte- carácter.

Vea también

Referencia

Conversión de datos

Configuración regional

Interpretación de secuencias de caracteres de varios bytes

Compatibilidad con el punto flotante

atof, _atof_l, _wtof, _wtof_l