Como converter Int para uma string em C++
- 
          
            Usar Macro de Stringizing para converter um intem umString
- 
          
            Utilize to_string()Método para conversão de Int para String
- 
          
            Utilize std::stringstreamClass estr()Method for Int to String Conversion
- 
          
            Utilize o método std::to_charspara conversão de Int para String
 
Este artigo apresentará os métodos C++ para converter um int em um string.
Usar Macro de Stringizing para converter um int em um String
    
Este método tem um uso bastante limitado quando se trata de uma conversão de strings. Nomeadamente, ele só pode ser utilizado quando os chamados valores numéricos codificados precisam ser convertidos para um tipo string.
Macros são blocos de código aos quais o programador atribui o nome, e sempre que o nome é utilizado, ele é substituído por expansão de macro (a parte direita da declaração de macro).
Esta é uma característica do pré-processador C/C++, o que significa que você só pode utilizá-la com valores literais.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
#define STRING(num) #num
int main() {
  string num_cstr(STRING(1234));
  num_cstr.empty() ? cout << "empty\n" : cout << num_cstr << endl;
  return EXIT_SUCCESS;
}
Resultado:
1234
Observe, no entanto, que quando você quiser definir o resultado de outra expansão de macro (neste exemplo NUMBER que se expande para 123123), você precisará definir a macro em dois níveis como mostrado no seguinte bloco de código:
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
#define STRING(num) STR(num)
#define STR(num) #num
#define NUMBER 123123
int main() {
  string num_cstr(STRING(NUMBER));
  num_cstr.empty() ? cout << "empty\n" : cout << num_cstr << endl;
  return EXIT_SUCCESS;
}
Resultado:
123123
Utilize to_string() Método para conversão de Int para String
A função de biblioteca to_string é uma função construída <string>, que toma um único valor numérico como argumento e retorna o objeto string. Este método é a solução recomendada para este problema. Entretanto, esteja ciente de que a passagem dos valores de ponto flutuante para o método to_string produz alguns resultados inesperados, como demonstrado no exemplo de código a seguir:
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
  int n1 = 9876;
  double n2 = 0.0000000000000000000001;
  double n3 = 2.000000000000123;
  string num_str1(std::to_string(n1));
  string num_str2(std::to_string(n2));
  string num_str3(std::to_string(n3));
  num_str1.empty() ? cout << "empty\n" : cout << num_str1 << endl;
  num_str1.empty() ? cout << "empty\n" : cout << num_str2 << endl;
  num_str1.empty() ? cout << "empty\n" : cout << num_str3 << endl;
  return EXIT_SUCCESS;
}
Resultado:
9876
0.000000
2.000000
Utilize std::stringstream Class e str() Method for Int to String Conversion
Outra alternativa para resolver este problema é utilizar a classe stringstream, que armazena a instância string internamente e fornece o método str() para recuperar o objeto string do conteúdo stringstream.
#include <iostream>
#include <sstream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
  int n1 = 9876;
  std::stringstream sstream;
  sstream << n1;
  string num_str = sstream.str();
  num_str.empty() ? cout << "empty\n" : cout << num_str << endl;
  return EXIT_SUCCESS;
}
Resultado:
9876
Utilize o método std::to_chars para conversão de Int para String
O método a seguir é relativamente complicado em comparação com outros, uma vez que requer uma array temporária a ser inicializada para o armazenamento de resultados convertidos. Embora, no lado positivo, este método seja independente do local, sem alocação e sem lançamento. A função to_chars toma o intervalo da array de char e converte o inteiro para uma string. Uma vez que os caracteres são armazenados na variável arr, um novo objeto string é inicializado com o argumento arr.data().
#include <array>
#include <charconv>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
#define MAX_DIGITS 100
int main() {
  int n1 = 9876;
  std::array<char, MAX_DIGITS> arr{};
  std::to_chars(arr.data(), arr.data() + arr.size(), n1);
  string num_str(arr.data());
  cout << num_str << endl;
  return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook