Comment convertir Int en chaîne de caractères en C++
- Utiliser une macro de stringing pour convertir un Int littéral en une chaîne
-
Utilisez la méthode
to_string()
pour la conversion Int à String -
Utilisez la classe
std::stringstream
et la méthodestr()
pour la conversion Int vers String -
Utilisez la méthode
std::to_chars
pour la conversion Int vers String
Cet article présente les méthodes C++ pour convertir un int
en une chaîne
.
Utiliser une macro de stringing pour convertir un Int littéral en une chaîne
Cette méthode a une utilisation assez limitée lorsqu’il s’agit de convertir un int en chaîne de caractères. En effet, elle ne peut être utilisée que lorsque des valeurs numériques codées en dur doivent être converties en un type de chaîne
.
Les macros sont des blocs de code auxquels le programmeur attribue un nom, et chaque fois que ce nom est utilisé, il est remplacé par une expansion de macro (la partie droite de l’instruction de macro).
Il s’agit d’une fonctionnalité du préprocesseur C/C++, ce qui signifie que vous ne pouvez l’utiliser qu’avec des valeurs littérales.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
#define STRING(num) #num
int main() {
string num_cstr(STRING(1234));
num_cstr.empty() ? cout << "empty\n" : cout << num_cstr << endl;
return EXIT_SUCCESS;
}
Production:
1234
Notez, cependant, que lorsque vous voulez chaîner le résultat d’une autre expansion de macro (dans cet exemple NUMBER
qui se développe en 123123
), vous devez définir une macro à deux niveaux comme indiqué dans le bloc de code suivant:
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
#define STRING(num) STR(num)
#define STR(num) #num
#define NUMBER 123123
int main() {
string num_cstr(STRING(NUMBER));
num_cstr.empty() ? cout << "empty\n" : cout << num_cstr << endl;
return EXIT_SUCCESS;
}
Production:
123123
Utilisez la méthode to_string()
pour la conversion Int à String
La fonction to_string
est une fonction de bibliothèque intégrée <string>
, qui prend une seule valeur numérique comme argument et retourne un objet string
. Cette méthode est la solution recommandée pour ce problème. Cependant, soyez conscient que le passage des valeurs à virgule float à la méthode to_string
donne des résultats inattendus, comme le montre l’exemple de code suivant:
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
int n1 = 9876;
double n2 = 0.0000000000000000000001;
double n3 = 2.000000000000123;
string num_str1(std::to_string(n1));
string num_str2(std::to_string(n2));
string num_str3(std::to_string(n3));
num_str1.empty() ? cout << "empty\n" : cout << num_str1 << endl;
num_str1.empty() ? cout << "empty\n" : cout << num_str2 << endl;
num_str1.empty() ? cout << "empty\n" : cout << num_str3 << endl;
return EXIT_SUCCESS;
}
Production:
9876
0.000000
2.000000
Utilisez la classe std::stringstream
et la méthode str()
pour la conversion Int vers String
Une autre alternative pour résoudre ce problème est d’utiliser la classe stringstream
, qui stocke l’instance string
en interne et fournit la méthode str()
pour récupérer l’objet string
à partir du contenu stringstream
.
#include <iostream>
#include <sstream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
int n1 = 9876;
std::stringstream sstream;
sstream << n1;
string num_str = sstream.str();
num_str.empty() ? cout << "empty\n" : cout << num_str << endl;
return EXIT_SUCCESS;
}
Production:
9876
Utilisez la méthode std::to_chars
pour la conversion Int vers String
La méthode suivante est relativement lourde par rapport à d’autres, car elle nécessite l’initialisation d’une matrice temporaire de char
pour le stockage des résultats convertis. Bien que, du côté positif, cette méthode soit indépendante de la localité, elle ne nécessite pas d’attribution ni de lancement. La fonction to_chars
prend la plage du tableau char
et convertit l’entier en une chaîne de caractères. Une fois que les caractères sont stockés dans la variable arr
, un nouvel objet string
est initialisé avec l’argument arr.data()
.
#include <array>
#include <charconv>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
#define MAX_DIGITS 100
int main() {
int n1 = 9876;
std::array<char, MAX_DIGITS> arr{};
std::to_chars(arr.data(), arr.data() + arr.size(), n1);
string num_str(arr.data());
cout << num_str << endl;
return EXIT_SUCCESS;
}
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++