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 (de las funciones de conversión) de tipo char * (1,3,5) o wchar_t * (2,4,6) , según corresponda.
La función descarta cualquier carácter de espacio en blanco (según lo determinado por std::isspace ) hasta que se encuentra el primer carácter que no es un espacio en blanco. Luego toma tantos caracteres como sea posible para formar una representación válida de punto flotante y los convierte en un valor de punto flotante. El valor válido de punto flotante puede ser uno de los siguientes:
- expresión decimal de punto flotante. Consta de 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) (define el significando)
-
(opcional)
eoEseguido de signo menos o más opcional y 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 opcionalmente contiene un carácter de punto decimal (según lo determinado por la configuración regional actual de C) (define el significando)
-
(opcional)
poPseguido de un signo más o menos 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
-
INFoINFINITYignorando mayúsculas/minúsculas
- expresión no es un número. Consta de las siguientes partes:
-
- (opcional) signo más o menos
-
NANoNAN(char_sequence )ignorando mayúsculas/minúsculas en 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 configuración regional de C actualmente instalada locale .
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 será calculado y almacenado en * pos , indicando el número de caracteres que fueron procesados por la conversión.
Contenidos |
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) |