HOWTO · C++
Comment ajouter un entier à une chaîne de caractères en C++
Cet article montre comment ajouter int à une chaîne de caractères en C++
Sur cette page
Pour ajouter un entier à une chaîne existante de type C++, convertissez l’entier en texte, puis concaténez-le. Dans le cas courant, std::to_string associé à std::string::operator+= est la solution la plus directe. Vous pouvez aussi assembler un nouveau résultat avec std::stringstream, ou convertir l’entier avant d’appeler std::string::append.
Choisir la bonne méthode pour ajouter un entier à une chaîne
Utilisez std::to_string et += lorsque vous voulez compléter une chaîne existante. Utilisez std::stringstream pour assembler du texte et des valeurs dans une nouvelle chaîne au moyen de l’insertion dans un flux. Utilisez std::string::append si vous préférez cette fonction membre de la chaîne ; elle aussi attend du texte sous forme de chaîne. Les exemples ci-dessous présentent chaque méthode avec le même texte initial et le même entier.
Utiliser std::to_string avec +=
std::to_string(number) convertit la valeur numérique en std::string, puis += ajoute ce texte à la chaîne existante. Cet exemple complet est un bon point de départ ; il affiche le libellé anglais inchangé Order number: 12345, suivi d’un retour à la ligne.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
#include <iostream>
#include <string>
int main() {
std::string message = "Order number: ";
int number = 12345;
message += std::to_string(number);
std::cout << message << '\n';
return 0;
}
Order number: 12345
La même fonction de conversion accepte aussi les nombres à virgule flottante. Selon les anciennes spécifications de C++ et de nombreuses implémentations, std::to_string(12.345) produit couramment un texte tel que 12.345000 ; les versions plus récentes de C++ peuvent formater ces valeurs différemment. Ne vous fiez pas à une représentation unique et ne supposez pas que les zéros décimaux finaux sont supprimés. Si vous avez besoin d’un nombre précis de décimales ou d’un format sans zéros superflus, utilisez un flux avec des paramètres de formatage ou une autre méthode de formatage explicite.
Utiliser std::stringstream pour construire une chaîne
Un std::stringstream accepte des valeurs au moyen de l’opérateur d’insertion <<. Insérez le texte initial et l’entier, puis appelez .str() pour récupérer le résultat assemblé. Cette méthode crée une nouvelle chaîne de résultat ; elle n’ajoute rien à la variable de chaîne d’origine et ne la modifie pas. Incluez <sstream> pour utiliser ce type de flux. L’exemple affiche le libellé anglais inchangé Order number: 12345, suivi d’un retour à la ligne.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string message = "Order number: ";
int number = 12345;
std::stringstream stream;
stream << message << number;
std::cout << stream.str() << '\n';
return 0;
}
Order number: 12345
Utiliser std::string::append avec un entier converti
std::string::append ajoute des caractères ou du texte sous forme de chaîne ; convertissez donc l’entier avant de le lui transmettre. Comme le montre l’exemple, la surcharge qui accepte une chaîne peut recevoir directement le résultat de std::to_string. L’exemple affiche le libellé anglais inchangé Order number: 12345, suivi d’un retour à la ligne.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
#include <iostream>
#include <string>
int main() {
std::string message = "Order number: ";
int number = 12345;
message.append(std::to_string(number));
std::cout << message << '\n';
return 0;
}
Order number: 12345
Ne confondez pas l’ajout d’un entier converti avec la surcharge append(count, character) : celle-ci répète le caractère indiqué. Par exemple, message.append(3, '!') ajoute !!! ; elle ne convertit pas le nombre 3 en texte 3.