Como converter int para string em C++: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

«Int para string» em C++: por que essa questão atormenta até os experientes?

\n

Imagine a situação: você está escrevendo um programa em C++ que deve exibir na tela um número e, em seguida, adicionar texto a ele — por exemplo, «Resultado: 42». Ou você precisa salvar o ID do usuário (int) em um arquivo JSON como string. Parece simples, não é? Mas eis o problema: em C++, você não pode simplesmente escrever string s = 42;. O compilador emitirá um erro.

\n

A pergunta «How can I convert int to string in C++?» é uma das mais populares no Stack Overflow (centenas de milhares de visualizações). E não é por acaso. Ao contrário do Python ou JavaScript, onde tudo «se converte magicamente», o C++ exige conversão explícita de tipos. Mas não se preocupe! Neste artigo, abordaremos 5 maneiras comprovadas, desde as clássicas até o moderno C++20. Você descobrirá qual método é mais rápido, qual é mais conveniente e quando usar cada um deles.

\n

Vamos lá!

\n\n

Método nº1: std::to_string — moderno e simples (C++11 em diante)

\n

A partir do C++11, a biblioteca padrão incluiu a função std::to_string. Esta é a maneira mais simples e legível de converter int para string em C++.

\n
#include <iostream>\n#include <string>\n\nint main() {\n    int number = 2024;\n    std::string str = std::to_string(number);\n    std::cout << "String: " << str << std::endl;  // Saída: String: 2024\n    return 0;\n}
\n

Vantagens:

\n
    \n
  • Curto e claro — uma linha de código
  • \n
  • Suporta int, long, float, double e outros tipos numéricos
  • \n
  • Não requer bibliotecas adicionais (além de <string>)
  • \n
\n

Desvantagens:

\n
    \n
  • Sem controle sobre formatação (número de dígitos, zeros à esquerda)
  • \n
  • Mais lento que métodos de baixo nível, se chamado milhões de vezes
  • \n
\n

Quando usar: Em 90% dos casos. Para tarefas comuns, onde não é necessário um formato de saída específico, std::to_string é a escolha ideal.

\n\n

Método nº2: std::stringstream — flexível como um canivete suíço

\n

Se você precisa não apenas converter o número, mas também formatá-lo (adicionar espaços, alterar a base do sistema numérico), o std::stringstream vem em seu auxílio. Esta é uma classe da biblioteca <sstream> que funciona como uma «string inteligente».

\n
#include <iostream>\n#include <sstream>\n#include <string>\n\nint main() {\n    int number = 255;\n    std::stringstream ss;\n    ss << "Valor: " << number << " (hexadecimal: " << std::hex << number << ")";\n    std::string result = ss.str();\n    std::cout << result << std::endl;\n    // Saída: Valor: 255 (hexadecimal: ff)\n    return 0;\n}
\n

Vantagens:

\n
    \n
  • Controle total sobre formatação (std::hex, std::oct, std::setw, std::setprecision)
  • \n
  • Pode concatenar strings e números «em tempo real»
  • \n
\n

Desvantagens:

\n
    \n
  • Mais lento que std::to_string devido à criação do objeto stringstream
  • \n
  • Requer mais código para conversão simples
  • \n
\n

Quando usar: Quando for necessária formatação complexa ou conversão para diferentes bases numéricas.

\n\n

Método nº3: sprintf e snprintf — método antigo do C

\n

Uma maneira antiga, mas confiável, vinda da linguagem C. A função sprintf escreve uma string formatada em um array char. Em C++, também pode ser usada, mas é preciso cuidado com estouro de buffer.

\n
#include <iostream>\n#include <cstdio>  // para sprintf\n#include <cstring> // para strlen\n\nint main() {\n    int number = 42;\n    char buffer[50];\n    sprintf(buffer, "%d", number);\n    std::string str(buffer);\n    std::cout << "Resultado: " << str << std::endl;\n    return 0;\n}
\n

Importante:

Blogs

Book Recommendations