std::stof, std::stod, std::stold
Definido en el archivo de encabezado <string> | ||
float stof(conststd::string& str, std::size_t* pos =0); float stof(conststd::wstring& str, std::size_t* pos =0); | (1) | (desde C++11) |
double stod(conststd::string& str, std::size_t* pos =0); double stod(conststd::wstring& str, std::size_t* pos =0); | (2) | (desde C++11) |
longdouble stold(conststd::string& str, std::size_t* pos =0); longdouble stold(conststd::wstring& str, std::size_t* pos =0); | (3) | (desde C++11) |
Interpreta un valor de punto flotante en una cadena str
.
La función descarta cualquier carácter en blanco (según lo determinado por std::isspace()) hasta que se encuentra el primer carácter que no es carácter en blanco. Entonces toma tantos caracteres como sea posible para formar una representación válida de número de punto flotante y los convierte a un valor de punto flotante. El valor de punto flotante válido puede ser uno de los siguientes:
- Expresión decimal de punto flotante. Consiste en las siguientes partes:
- (opcional) signo más o menos;
- secuencia no vacía de dígitos decimales que opcionalmente contiene el carácter de punto decimal según lo determinado por la configuración regional actual de C (locale) (define el significando);
- (opcional)
e
oE
seguido de un signo menos o más opcional y una secuencia de dígitos decimales no vacía (define el exponente a base 10).
- Expresión hexadecimal de punto flotante. Consiste en las siguientes partes:
- (opcional) signo más o menos;
0x
o0X
;- secuencia no vacía de dígitos hexadecimales que opcionalmente contiene el carácter de punto decimal según lo determinado por la configuración regional actual de C (locale) (define el significando);
- (opcional)
p
oP
seguido de un signo menos o más opcional y una secuencia de dígitos decimales no vacía (define el exponente a base 2).
- Expresión de infinito. Consiste en las siguientes partes:
- (opcional) signo más o menos;
INF
oINFINITY
ignorando mayúsculas o minúsculas.
- Expresión no es un número. Consiste en las siguientes partes:
- (opcional) signo más o menos;
NAN
oNAN(
secuencia_char)
ignorando mayúsculas o minúsculas de la parteNAN
. secuencia_char solamente puede contener dígitos, letras del alfabeto en Latín y guiones bajos. El resultado es un valor de punto flotante NaN.
- Cualquier otra expresión que pueda ser aceptada por la configuración regional actual de C (locale).
Si pos
no es un puntero nulo, entonces un puntero ptr
, interno a las funciones de conversión, recibirá la dirección del primer carácter no convertido en str.c_str(), y el índice de ese carácter se calculará y almacenará en *pos
, dando el número de caracteres que se procesaron por la conversión.
Contenido |
[editar]Parámetros
str | - | La cadena a convertir. |
pos | - | Dirección de un entero para almacenar el número de caracteres procesados. |
[editar]Valor de retorno
La cadena convertida al tipo entero sin signo especificado.
[editar]Excepciones
- std::invalid_argument si la conversión no se pudo realizar.
- std::out_of_range si el valor convertido caería fuera del rango del tipo del resultado, o si la función subyacente (
strtof
,strtod
ostrtold
) establece errno a ERANGE.
[editar]Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 2403 | C++11 | stof llamaba a std::strtod o std::wcstod | stof Llama a std::strtof o std::wcstof |
[editar]Véase también
(C++11)(C++11)(C++11) | Convierte una cadena a un entero con signo (función) |
(C++11)(C++11) | Convierte una cadena a un entero sin signo (función) |