202 votes

Comment ajouter un int à une chaîne de caractères en C++ ?

int i = 4;
string text = "Player ";
cout << (text + i);

J'aimerais qu'il affiche "Joueur 4".

Ce qui précède est évidemment faux, mais il montre ce que j'essaie de faire ici. Y a-t-il un moyen facile de le faire ou dois-je commencer à ajouter de nouveaux includes ?

315voto

headmyshoulder Points 1517

Avec C++11, vous pouvez écrire

int i = 4;
std::string text = "Player ";
text += std::to_string( i );

212voto

Sebastian Redl Points 18816

Eh bien, si vous utilisez cout, vous pouvez simplement écrire l'entier directement dans celui-ci, comme dans

std::cout << text << i;

La façon C++ de convertir tous les types d'objets en chaînes de caractères est par le biais de flux de chaînes . Si vous n'en avez pas sous la main, créez-en un.

#include <sstream>

std::ostringstream oss;
oss << text << i;
std::cout << oss.str();

Vous pouvez également convertir le nombre entier et l'ajouter à la chaîne de caractères.

oss << i;
text += oss.str();

Enfin, les bibliothèques Boost fournissent boost::lexical_cast qui englobe la conversion du flux de chaînes avec une syntaxe similaire à celle des casts de type intégrés.

#include <boost/lexical_cast.hpp>

text += boost::lexical_cast<std::string>(i);

Cela fonctionne également dans l'autre sens, c'est-à-dire pour analyser les chaînes de caractères.

125voto

Eric Points 5994
printf( "Player %d", i );
(Downvotez ma réponse tant que vous voulez, je déteste toujours les opérateurs IO du C++).

-P

18voto

Fire Lancer Points 8934

Ceux-ci fonctionnent pour les chaînes générales (dans le cas où vous ne voulez pas sortir vers un fichier/console, mais stocker pour une utilisation ultérieure ou autre).

boost.lexical_cast

MyStr += boost::lexical_cast<std::string>(MyInt);

flux de chaînes

//sstream.h
std::stringstream Stream;
Stream.str(MyStr);
Stream << MyInt;
MyStr = Stream.str();

//if your using a stram (eg cout), rather than std::string
someStream << MyInt;

9voto

Jason Baker Points 56682

Pour mémoire, vous pouvez également utiliser un chaîne de caractères si vous voulez créer la chaîne de caractères avant qu'elle ne soit effectivement produite.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X