Cómo convertir la Int a Char Array en C++
-
Usando la función
std::sprintf
para convertirint
achar*
-
Combinando los métodos
to_string()
yc_str()
para convertirint
achar*
-
Utilizando los métodos de clase
std::stringstream
para la conversión -
Usando la función
std::to_chars
para convertirint
achar*
Este artículo explicará cómo convertir int
en un char array
(char*
) usando diferentes métodos.
En los siguientes ejemplos, asumimos que almacenamos la salida de la conversión en el buffer de la memoria, y para propósitos de verificación, vamos a dar el resultado con std::printf
.
Usando la función std::sprintf
para convertir int
a char*
Primero, tenemos que asignar espacio para almacenar una sola variable int
que vamos a convertir en un buffer char
. Note que el siguiente ejemplo está definiendo la longitud máxima MAX_DIGITS
para los datos enteros. Para calcular la longitud del buffer char, añadimos sizeof(char)
porque la función sprintf
escribe una cadena de caracteres que termina en un byte \0
automáticamente en el destino. Por lo tanto, deberíamos tener en cuenta la asignación de suficiente espacio 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
Ten en cuenta que llamar a sprintf
con buffers de origen y destino superpuestos (por ejemplo, sprintf(buf, "%s some text to add", buf)
) no es recomendable ya que tiene un comportamiento indefinido y producirá resultados incorrectos dependiendo del compilador.
Combinando los métodos to_string()
y c_str()
para convertir int
a char*
Esta versión utiliza métodos de clase std::string
para hacer la conversión, lo que la convierte en una versión mucho más segura que tratar con sprintf
como se muestra en el ejemplo 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;
}
Utilizando los métodos de clase std::stringstream
para la conversión
Este método se implementa usando la clase std::stringstream
. Es decir, creamos un flujo temporal basado en cadenas donde se almacenan los datos int
, luego devolvemos el objeto cadena por el método str
y finalmente llamamos a c_str
para hacer la conversión.
#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;
}
Usando la función std::to_chars
para convertir int
a char*
Esta versión es una función de puro estilo C++ añadida en C++17 y definida en la cabecera <charconv>
. En el lado positivo, este método ofrece operaciones en rangos, lo que podría ser la solución más flexible en escenarios 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 FacebookArtículo relacionado - C++ Integer
- Entero grande en C++
- Especifique un entero de 64 bits en C++
- Uso de enteros de 128 bits en C++
- Comparación entre expresiones enteras con y sin signo en C++
- Compruebe si la entrada es un número entero en C++
- Compruebe si un número es primo en C++