Espacios de nombres
Variantes
Acciones

std::stof, std::stod, std::stold

De cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
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.

1) Llama a std::strtof(str.c_str(), &ptr) o std::wcstof(str.c_str(), &ptr).
2) Llama a std::strtod(str.c_str(), &ptr) o std::wcstod(str.c_str(), &ptr).
3) Llama a 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 (locale) (define el significando);
  • (opcional)e o E 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 o 0X;
  • 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 o P 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 o INFINITY 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 o NAN(secuencia_char) ignorando mayúsculas o minúsculas de la parte NAN. 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 o strtold) 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::wcstodstof 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)[editar]
(C++11)(C++11)
Convierte una cadena a un entero sin signo
(función)[editar]
close