Espacios de nombres
Variantes
Acciones

std::stoi, std::stol, std::stoll

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

1) Llama a std::strtol(str.c_str(), &ptr, base) o std::wcstol(str.c_str(), &ptr, base)
2) Llama a std::strtol(str.c_str(), &ptr, base) o std::wcstol(str.c_str(), &ptr, base)
3) Llama a std::strtoll(str.c_str(), &ptr, base) o std::wcstoll(str.c_str(), &ptr, base)

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 o 0X) 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.

El índice del carácter no convertido se almacena primero en pos. Si NULL se pasa como pos, se omite .
Original:
The index of the first unconverted character is stored in pos. If NULL is passed as pos, it is ignored.
The text has been machine-translated via Google Translate.
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

[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

Convierte una cadena de bytes en un valor entero.
(función)[editar]
(C++11)(C++11)
Convierte una cadena a un entero sin signo
(función)[editar]
(C++11)(C++11)(C++11)
Convierte una cadena en un valor de punto flotante
(función)[editar]
(C++11)
Convierte un valor de punto flotante o entero a una cadena string.
(función)[editar]
(C++17)
Convierte una secuencia de caracteres a un valor entero o de punto flotante
(función)[editar]
close