Como Converter Int para Char Array em C++
-
Utilize
std::sprintfFunção para converterintparachar* -
Combine
to_string()ec_str()Methods to Convertinttochar* -
Utilize
std::stringstreamMétodos de Classe para Conversão -
Utilize
std::to_charsFunção para converterintparachar*
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;
}
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 FacebookArtigo relacionado - C++ Integer
- Contar o número de dígitos em um número em C++
- Expressões de macro INT_MAX e INT_MIN em C++
- Verifique se a entrada é inteira em C++
- Verifique se um número é Prime em C++
- Parse Int de String em C++
- Como Converter Int para ASCII Char em C++
