Última actualización:2026-10-12
Convertir string a int en C++¶
Cuenta pública personal de WeChat:

Primero, las soluciones propuestas:
- atoi
- strtol
- stoi
¿En qué se diferencian? A continuación, una comparación mediante pruebas.
Funciones estilo C
Comparación entre atoi y strtol:
Salida:
Ambas funciones empiezan a buscar al inicio de la cadena un número, un signo o un punto decimal, y terminan al toparse con un carácter no válido.
Por eso, al llegar al carácter s anterior dejan de emitir y acaban antes; es decir, cuando tu cadena no es un número, o contiene un punto decimal u otro carácter no numérico, ¡no se lanza ninguna excepción! Devuelve directamente 0.
Por ejemplo:
Salida:
En comparación con atoi, strtol admite la conversión en varias bases, por ejemplo en base 8, etc.
Por ejemplo:
Estilo C++
En C++ se puede usar stoi para convertir a int; la mayor particularidad de esta función frente a las dos anteriores es: ¡las excepciones!
Sabemos que C++ incorpora excepciones respecto al lenguaje C, y esta es precisamente la capacidad más notable de esta función en C++.
Por ejemplo:
string str1 = "asq,";
// int c = stoi(str1); // 报异常
string str2 = "12312";
int c = stoi(str2); // ok
cout << c << endl;
La excepción es la siguiente:
Personalizado
Es decir, escribirlo uno mismo, así:
int stringToInt(const string &s) {
int v;
stringstream ss;
ss << s;
ss >> v;
return v;
}
int main() {
int i = stringToInt("2.3");
cout<<i<<endl;
}
Temas relacionados¶
- Construir proyectos C++ con Bazel | C++那些事
- Depuración conjunta de Bazel y LLDB | C++那些事
- CMake: introducción y práctica | C++那些事
- Introducción a Conan, gestor de paquetes de C++ | C++那些事
- C++ Insights: observación en tiempo de compilación | C++那些事
- C++ Jupyter Notebook interactivo | C++那些事
- dbg-macro, macro de depuración para C++ | C++那些事
- Explicación detallada de las opciones de compilación de GCC | C++那些事
- Depurar programas C++ con GDB | C++那些事
- Depuración con la extensión Python de GDB | C++那些事