Comment convertir int en string en C++ : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

« Int to string » en C++ : pourquoi cette question tourmente même les experts ?

\n

Imaginez la situation : vous écrivez un programme en C++ qui doit afficher un nombre à l’écran, puis y ajouter du texte — par exemple, « Résultat : 42 ». Ou vous devez enregistrer un ID utilisateur (int) dans un fichier JSON sous forme de chaîne. Cela semble simple, non ? Mais voilà le problème : en C++, on ne peut pas simplement écrire string s = 42;. Le compilateur générera une erreur.

\n

La question « How can I convert int to string in C++? » est l’une des plus populaires sur Stack Overflow (des centaines de milliers de vues). Et ce n’est pas un hasard. Contrairement à Python ou JavaScript, où tout se convertit « comme par magie », C++ nécessite une conversion explicite des types. Mais ne vous inquiétez pas ! Dans cet article, nous allons explorer 5 méthodes éprouvées, des classiques au C++20 moderne. Vous découvrirez quelle méthode est la plus rapide, laquelle est la plus pratique, et quand les utiliser.

\n

C’est parti !

\n\n

Méthode n°1 : std::to_string — moderne et simple (C++11 et plus récent)

\n

Depuis C++11, la bibliothèque standard propose la fonction std::to_string. C’est la manière la plus simple et la plus lisible de convertir un int en string en C++.

\n
#include <iostream>\n#include <string>\n\nint main() {\n    int number = 2024;\n    std::string str = std::to_string(number);\n    std::cout << "Chaîne : " << str << std::endl;  // Affichage : Chaîne : 2024\n    return 0;\n}
\n

Avantages :

\n
    \n
  • Court et clair — une seule ligne de code
  • \n
  • Prend en charge int, long, float, double et d’autres types numériques
  • \n
  • Pas besoin de bibliothèques supplémentaires (sauf <string>)
  • \n
\n

Inconvénients :

\n
    \n
  • Pas de contrôle sur le formatage (nombre de chiffres, zéros non significatifs)
  • \n
  • Plus lent que les méthodes bas niveau si appelé des millions de fois
  • \n
\n

Quand l’utiliser : Dans 90 % des cas. Pour les tâches courantes sans formatage spécifique, std::to_string est le choix idéal.

\n\n

Méthode n°2 : std::stringstream — flexible comme un couteau suisse

\n

Si vous avez besoin non seulement de convertir un nombre, mais aussi de le formater (ajouter des espaces, changer la base numérique), std::stringstream vient à la rescousse. C’est une classe de la bibliothèque <sstream> qui fonctionne comme une « chaîne intelligente ».

\n
#include <iostream>\n#include <sstream>\n#include <string>\n\nint main() {\n    int number = 255;\n    std::stringstream ss;\n    ss << "Valeur : " << number << " (hexadécimal : " << std::hex << number << ")";\n    std::string result = ss.str();\n    std::cout << result << std::endl;\n    // Affichage : Valeur : 255 (hexadécimal : ff)\n    return 0;\n}
\n

Avantages :

\n
    \n
  • Contrôle total du formatage (std::hex, std::oct, std::setw, std::setprecision)
  • \n
  • Possibilité de concaténer chaînes et nombres « à la volée »
  • \n
\n

Inconvénients :

\n
    \n
  • Plus lent que std::to_string en raison de la création de l’objet stringstream
  • \n
  • Nécessite plus de code pour une simple conversion
  • \n
\n

Quand l’utiliser : Lorsque vous avez besoin d’un formatage complexe ou d’une conversion dans différentes bases numériques.

\n\n

Méthode n°3 : sprintf et snprintf — la méthode ancestrale du C

\n

Une méthode ancienne mais fiable, héritée du langage C. La fonction sprintf écrit une chaîne formatée dans un tableau char. En C++, on peut aussi l’utiliser, mais il faut faire attention aux débordements de tampon.

\n
#include <iostream>\n#include <cstdio>  // pour sprintf\n#include <cstring> // pour strlen\n\nint main() {\n    int number = 42;\n    char buffer[50];\n    sprintf(buffer, "%d", number);\n    std::string str(buffer);\n    std::cout << "Résultat : " << str << std::endl;\n    return 0;\n}
\n

Important :

Blogs

Book Recommendations