Última atualização:2026-10-12
Converter string para int em C++¶
Conta pública pessoal no WeChat:

Primeiro, apresentamos as soluções:
- atoi
- strtol
- stoi
Qual a diferença entre eles? Abaixo, um teste comparativo.
Funções no estilo da linguagem C
Comparação entre atoi e strtol:
Saída:
Essas duas funções começam a procurar, a partir do início da string, por números, sinais de positivo ou negativo, ou pontos decimais, e param ao encontrar um caractere inválido.
Portanto, ao chegar no caractere s mencionado acima, a saída termina antecipadamente; ou seja, quando a sua string não é um número, ou contém pontos decimais e outros caracteres não numéricos, nenhuma exceção é lançada! O valor 0 é retornado diretamente.
Por exemplo:
Saída:
Em comparação com o atoi, o strtol oferece suporte à conversão entre várias bases, como a base 8 (octal), por exemplo
Por exemplo:
Estilo C++
Em C++, é possível usar stoi para converter para int; a maior característica dessa função em relação às duas anteriores é: exceções!
Sabemos que o C++, em comparação com a linguagem C, possui exceções — e essa é a funcionalidade mais marcante dessa função no C++.
Por exemplo:
string str1 = "asq,";
// int c = stoi(str1); // 报异常
string str2 = "12312";
int c = stoi(str2); // ok
cout << c << endl;
A exceção é a seguinte:
Implementação personalizada
Ou seja, escrever a sua própria, como segue:
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;
}
Tópicos relacionados¶
- Construindo projetos C++ com Bazel | C++那些事
- Depuração conjunta de Bazel e LLDB | C++那些事
- CMake: introdução e prática | C++那些事
- Introdução ao gerenciamento de pacotes C++ com Conan | C++那些事
- C++ Insights: observação em tempo de compilação | C++那些事
- C++ interativo com Jupyter Notebook | C++那些事
- Macro de depuração dbg-macro em C++ | C++那些事
- Opções de compilação do GCC em detalhes | C++那些事
- Depuração de programas C++ com GDB | C++那些事
- Depuração estendida com Python no GDB | C++那些事