std::stof, std::stod, std::stold
| Definido en el archivo de encabezado <string>
|
||
float stof( const std::string& str, std::size_t* pos = 0 ); float stof( const std::wstring& str, std::size_t* pos = 0 ); |
(1) | (desde C++11) |
double stod( const std::string& str, std::size_t* pos = 0 ); double stod( const std::wstring& str, std::size_t* pos = 0 ); |
(2) | (desde C++11) |
long double stold( const std::string& str, std::size_t* pos = 0 ); long double stold( const std::wstring& str, std::size_t* pos = 0 ); |
(3) | (desde C++11) |
Interpreta un valor de punto flotante en una cadena str.
std::strtof(str.c_str(), &ptr) o std::wcstof(str.c_str(), &ptr).std::strtod(str.c_str(), &ptr) o std::wcstod(str.c_str(), &ptr).std::strtold(str.c_str(), &ptr) o std::wcstold(str.c_str(), &ptr).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 (std::setlocale) (define el significando);
- (opcional)
eoEseguido 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;
0xo0X;- 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 (std::setlocale) (define el significando);
- (opcional)
poPseguido 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;
INFoINFINITYignorando mayúsculas o minúsculas.
- Expresión no es un número. Consiste en las siguientes partes:
- (opcional) signo más o menos;
NANoNAN(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 (std::setlocale).
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.
Parámetros
| str | - | La cadena a convertir. |
| pos | - | Dirección de un entero para almacenar el número de caracteres procesados. |
Valor de retorno
La cadena convertida al tipo entero sin signo especificado.
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,strtodostrtold) estableceerrnoaERANGE.
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
|
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) |