std::stof, std::stod, std::stold
| Definido en el encabezado <string>
|
||
float stof ( const std::string& str, std::size_t* pos = nullptr );
|
(1) | (desde C++11) |
float stof ( const std::wstring& str, std::size_t* pos = nullptr );
|
(2) | (desde C++11) |
double stod ( const std::string& str, std::size_t* pos = nullptr );
|
(3) | (desde C++11) |
double stod ( const std::wstring& str, std::size_t* pos = nullptr );
|
(4) | (desde C++11) |
long double stold( const std::string& str, std::size_t* pos = nullptr );
|
(5) | (desde C++11) |
long double stold( const std::wstring& str, std::size_t* pos = nullptr );
|
(6) | (desde C++11) |
Interpreta un valor de punto flotante en una cadena str.
Sea ptr un puntero interno (a las funciones de conversión) de tipo char* (1,3,5) o wchar_t* (2,4,6), según corresponda.
std::strtof(str.c_str(), &ptr).std::wcstof(str.c_str(), &ptr).std::strtod(str.c_str(), &ptr).std::wcstod(str.c_str(), &ptr).std::strtold(str.c_str(), &ptr).std::wcstold(str.c_str(), &ptr).La función descarta cualquier carácter de espacio en blanco (según lo determina std::isspace) hasta que se encuentra el primer carácter que no sea un espacio en blanco. Luego toma tantos caracteres como sea posible para formar una representación de punto flotante válida y los convierte a un valor de punto flotante. El valor de punto flotante válido puede ser uno de los siguientes:
- expresión de punto flotante decimal. Consta de las siguientes partes:
- (opcional) signo más o menos
- secuencia no vacía de dígitos decimales que puede contener opcionalmente un carácter de punto decimal (según lo determina la locale actual de C) (define la mantisa)
- (opcional)
eoEseguido de un signo menos o más opcional y una secuencia no vacía de dígitos decimales (define el exponente en base 10)
- expresión de punto flotante hexadecimal. Consta de las siguientes partes:
- (opcional) signo más o menos
0xo0X- secuencia no vacía de dígitos hexadecimales que puede contener opcionalmente un carácter de punto decimal (según lo determina la locale actual de C) (define la mantisa)
- (opcional)
poPseguido de un signo menos o más opcional y una secuencia no vacía de dígitos decimales (define el exponente en base 2)
- expresión de infinito. Consta de las siguientes partes:
- (opcional) signo más o menos
INFoINFINITYsin distinción de mayúsculas y minúsculas
- expresión de no es un número. Consta de las siguientes partes:
- (opcional) signo más o menos
NANoNAN(char_sequence )sin distinción de mayúsculas y minúsculas de la parteNAN. char_sequence solo puede contener dígitos, letras latinas y guiones bajos. El resultado es un valor de punto flotante NaN silencioso.
- cualquier otra expresión que pueda ser aceptada por la locale de C actualmente instalada.
Si pos no es un puntero nulo, entonces ptr 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 fueron procesados 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 de punto flotante especificado.
Excepciones
std::invalid_argument si no se pudo realizar ninguna conversión.
std::out_of_range si el valor convertido caería fuera del rango del tipo de resultado o si la función subyacente ( std::strtof , std::strtod o std::strtold ) establece errno a ERANGE .
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2009 | C++11 |
std::out_of_range
no sería lanzado si el valor convertido
cayera fuera del rango del tipo de resultado |
lanzará |
| 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) |
|
(C++17)
|
convierte una secuencia de caracteres a un valor entero o de punto flotante
(función) |