Como Converter Int para Char Array em C++
-
Utilize
std::sprintf
Função para converterint
parachar*
-
Combine
to_string()
ec_str()
Methods to Convertint
tochar*
-
Utilize
std::stringstream
Métodos de Classe para Conversão -
Utilize
std::to_chars
Função para converterint
parachar*
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++