HOWTO · C++
Como Converter Int para Char Array em C++
Este artigo demonstra a maneira de converter o tipo de dados inteiros em string.
Nesta página
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;
}