Comment convertir Int en Char Array en C++
-
Utilisation de la fonction
std::sprintf
pour convertirint
enchar*
-
Combinaison des méthodes
to_string()
etc_str()
pour convertirint
enchar*
-
Utilisation des méthodes de classe
std::stringstream
pour la conversion -
Utilisation de la fonction
std::to_chars
pour convertirint
enchar*
Cet article explique comment convertir int
en un tableau de caractères (char*
) en utilisant différentes méthodes.
Dans les exemples suivants, nous supposons de stocker la sortie de la conversion dans un tampon en mémoire, et pour des raisons de vérification, nous allons sortir le résultat avec std::printf
.
Utilisation de la fonction std::sprintf
pour convertir int
en char*
Tout d’abord, nous devons allouer de l’espace pour stocker une seule variable Int
que nous allons convertir dans un tampon “Char”. Notez que l’exemple suivant définit la longueur maximale MAX_DIGITS
pour des données entières. Pour calculer la longueur du tampon des caractères, nous ajoutons sizeof(char)
parce que la fonction sprintf
écrit une chaîne de caractères se terminant par un \0
octet automatiquement à la destination. Ainsi, nous devrions penser à allouer suffisamment d’espace pour ce tampon.
#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;
}
Production:
num_char : 1234
Notez qu’appeler sprintf
avec des tampons source et destination qui se chevauchent (par exemple sprintf(buf, "%s some text to add", buf)
) n’est pas recommandé car son comportement est indéfini et produira des résultats incorrects selon le compilateur.
Combinaison des méthodes to_string()
et c_str()
pour convertir int
en char*
Cette version utilise les méthodes de la classe std::string
pour effectuer la conversion, ce qui en fait une version bien plus sûre que de traiter avec sprintf
comme le montre l’exemple précédent.
#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;
}
Utilisation des méthodes de classe std::stringstream
pour la conversion
Cette méthode est implémentée en utilisant la classe std::stringstream
. A savoir, nous créons un flux temporaire basé sur une chaîne de caractères où sont stockées les données int
, puis nous retournons l’objet chaîne par la méthode str
et enfin nous appelons c_str
pour faire la conversion.
#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;
}
Utilisation de la fonction std::to_chars
pour convertir int
en char*
Cette version est une fonction de pur style C++ ajoutée en C++17 et définie dans l’en-tête <charconv>
. D’un point de vue positif, cette méthode offre des opérations sur des plages, ce qui pourrait être la solution la plus souple dans des scénarios spécifiques.
#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 FacebookArticle connexe - C++ Integer
- Comparaison entre les expressions entières signées et non signées en C++
- Compter le nombre de chiffres dans un nombre en C++
- Expressions de macro INT_MAX et INT_MIN en C++
- Vérifier si un nombre est premier en C++
- Vérifiez si l'entrée est un entier en C++
- Comment analyser une chaîne de caractères en C++