Como Converter Int para Char Array em C++

Jinku Hu 12 outubro 2023
  1. Utilize std::sprintf Função para converter int para char*
  2. Combine to_string() e c_str() Methods to Convert int to char*
  3. Utilize std::stringstream Métodos de Classe para Conversão
  4. Utilize std::to_chars Função para converter int para char*
Como Converter Int para Char Array em C++

Este artigo explicará como converter int em um char array (char*) utilizando métodos diferentes.

Nos exemplos a seguir, assumimos armazenar a saída do buffer de conversão in-memory, e para fins de verificação, vamos emitir o resultado com std::printf.

Utilize std::sprintf Função para converter int para char*

Primeiro, precisamos alocar espaço para armazenar uma única variável de não que vamos converter em um buffer char. Observe que o seguinte exemplo está definindo o comprimento máximo MAX_DIGITS para dados inteiros. Para calcular o comprimento do buffer de caracteres, adicionamos sizeof(char) porque a função sprintf escreve uma string terminando automaticamente o byte \0 no destino. Assim, devemos nos preocupar em alocar espaço suficiente para este buffer.

#include <iostream>

#define MAX_DIGITS 10

int main() {
  int number = 1234;
  char num_char[MAX_DIGITS + sizeof(char)];

  std::sprintf(num_char, "%d", number);
  std::printf("num_char: %s \n", num_char);

  return 0;
}

Resultado:

num_char : 1234

Note que chamar sprintf com buffers de origem e destino sobrepostos (por exemplo, sprintf(buf, "%s algum texto a adicionar", buf)) não é recomendado porque tem comportamento indefinido e produzirá resultados incorretos, dependendo do compilador.

Combine to_string() e c_str() Methods to Convert int to char*

Esta versão utiliza métodos de classe std::string para fazer a conversão, tornando-a uma versão muito mais segura do que lidar com sprintf, como mostrado no exemplo anterior.

#include <iostream>

int main() {
  int number = 1234;

  std::string tmp = std::to_string(number);
  char const *num_char = tmp.c_str();

  printf("num_char: %s \n", num_char);

  return 0;
}

Utilize std::stringstream Métodos de Classe para Conversão

Este método é implementado utilizando a classe std::stringstream. Nomeadamente, criamos um fluxo temporário baseado em string onde armazenamos int dados, depois retornamos o objeto string pelo método str e finalmente chamamos c_str para fazer a conversão.

#include <iostream>
#include <sstream>

int main() {
  int number = 1234;

  std::stringstream tmp;
  tmp << number;

  char const *num_char = tmp.str().c_str();
  printf("num_char: %s \n", num_char);
  ;

  return 0;
}

Utilize std::to_chars Função para converter int para char*

Esta versão é uma função estilo C++ pura acrescentada em C++17 e definida no cabeçalho <charconv>. No lado positivo, este método oferece operações em faixas, que podem ser a solução mais flexível em cenários específicos.

#include <charconv>
#include <iostream>

#define MAX_DIGITS 10

int main() {
  int number = 1234;
  char num_char[MAX_DIGITS + sizeof(char)];

  std::to_chars(num_char, num_char + MAX_DIGITS, number);
  std::printf("num_char: %s \n", num_char);

  return 0;
}
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artigo relacionado - C++ Integer

Artigo relacionado - C++ Char