std::stoi, std::stol, std::stoll
Definido en el archivo de encabezado <string> | ||
int stoi(conststd::string& str, std::size_t* pos =0, int base =10); int stoi(conststd::wstring& str, std::size_t* pos =0, int base =10); | (1) | (desde C++11) |
long stol(conststd::string& str, std::size_t* pos =0, int base =10); long stol(conststd::wstring& str, std::size_t* pos =0, int base =10); | (2) | (desde C++11) |
longlong stoll(conststd::string& str, std::size_t* pos =0, int base =10); longlong stoll(conststd::wstring& str, std::size_t* pos =0, int base =10); | (3) | (desde C++11) |
Interpreta un valor entero con signo en la cadena str
.
La función descarta cualquier carácter en blanco 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 entero de base-n (donde n=base) y los convierte a un valor entero . El valor entero válido consiste en las siguientes partes:
- (opcional) Signo más (
+
) o menos (-
) - (opcional) Prefijo (
0
) que indica la base octal (se aplica cuando la base es 8) - (opcional) Prefijo (
0x
o0X
) que indica la base hexadecimal (se aplica cuando la base es 16) - Una secuencia de dígitos
El conjunto de valores válidos para base es {0,2,3,...,36}. El conjunto de dígitos válidos para enteros de base 2 es 01
, para enteros de base 3 es 012
, y así sucesivamente. Para bases mayores que 10
, los dígitos válidos incluyen caracteres alfabéticos, empezando desde Aa
para enteros de base 11, hasta Zz
para enteros de base 36. Los caracteres alfabéticos pueden ser minúsculas o mayúsculas.
Pueden aceptarse formatos numéricos adicionales por la configuración regional de C actualmente instalada.
Si el valor de base es 0, la base numérica se detecta automáticamente: si el prefijo es 0
, la base es octal, si el prefijo es 0x
o 0X
, la base es hexadecimal, de lo contrario la base es decimal.
Si el signo menos era parte de la secuencia de entrada, el valor numérico calculado a partir de la secuencia de dígitos se niega como si lo fuera por el menos unario en el tipo del resultado
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 fueron procesados por la conversión.
pos
. Si NULL se pasa como pos
, se omite .pos
. If NULL is passed as pos
, it is ignored.You can help to correct and verify the translation. Click here for instructions.
Contenido |
[editar]Parámetros
str | - | La cadena a convertir. |
pos | - | Dirección de un número entero para almacenar el número de caracteres procesados. |
base | - | La base numérica. |
[editar]Valor de retorno
Valor entero que corresponde al contenido de str
.
[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.
[editar]Ejemplo
#include <iostream>#include <string> int main(){std::string str1 ="45";std::string str2 ="3.14159";std::string str3 ="31337 con palabras";std::string str4 ="palabras y 2"; int myint1 = std::stoi(str1);int myint2 = std::stoi(str2);int myint3 = std::stoi(str3);// ERROR: 'std::invalid_argument'// int myint4 = std::stoi(str4); std::cout<<"std::stoi(\""<< str1 <<"\") es "<< myint1 <<'\n';std::cout<<"std::stoi(\""<< str2 <<"\") es "<< myint2 <<'\n';std::cout<<"std::stoi(\""<< str3 <<"\") es "<< myint3 <<'\n';//std::cout << "std::stoi(\"" << str4 << "\") es " << myint4 << '\n';}
Salida:
std::stoi("45") es 45 std::stoi("3.14159") es 3 std::stoi("31337 con palabras") es 31337
[editar]Véase también
(C++11) | Convierte una cadena de bytes en un valor entero. (función) |
(C++11)(C++11) | Convierte una cadena a un entero sin signo (función) |
(C++11)(C++11)(C++11) | Convierte una cadena en un valor de punto flotante (función) |
(C++11) | Convierte un valor de punto flotante o entero a una cadena string . (función) |
(C++17) | Convierte una secuencia de caracteres a un valor entero o de punto flotante (función) |