C++ convertir un int en une chaîne de caractères
Je sais que c'est extrêmement basique, mais je suis très novice en C++ et n'arrive pas à trouver une réponse. Je suis simplement en train d'essayer de convertir quelques-uns entiers pour les cordes. Cette méthode fonctionne:
int a = 10;
stringstream ss;
ss << a;
string str = ss.str();
mais quand j'ai besoin de convertir les deuxième et troisième comme ceci:
int b = 13;
stringstream ss;
ss << a;
string str2 = ss.str();
int c = 15;
stringstream ss;
ss << b;
string str3 = ss.str();
J'obtiens cette erreur:
'std::stringstream ss' previously declared here
Dois-je en quelque sorte fermer stringstream? J'ai remarqué que si je les mets très éloignés les uns des autres dans mon code que le compilateur n'a pas l'esprit, mais qui ne semble pas comme quelque chose que je devrais faire. Quelqu'un aurait-il des suggestions?
êtes-vous à l'aide de stringstream juste pour convertir l'int d'une chaîne de caractères? vous devez vous essayez d'utiliser std::to_string à la place.
oui. J'ai essayé to_string et mon compilateur ne le comprennent pas. J'obtiens cette erreur: la Fonction 'to_string' n'a pas pu être résolu. J'ai fait en sorte que j'ai été aussi à l'aide #include <iostream> #include <string>
ajouter la chaîne d'en-tête de votre code. voir mon exemple ci-dessous
essayez std::to_string(int), Cela fonctionnera très bien.
to_string est une propriété de nouvelles versions C++. De nombreux compilateurs de ne pas comprendre.
oui. J'ai essayé to_string et mon compilateur ne le comprennent pas. J'obtiens cette erreur: la Fonction 'to_string' n'a pas pu être résolu. J'ai fait en sorte que j'ai été aussi à l'aide #include <iostream> #include <string>
ajouter la chaîne d'en-tête de votre code. voir mon exemple ci-dessous
essayez std::to_string(int), Cela fonctionnera très bien.
to_string est une propriété de nouvelles versions C++. De nombreux compilateurs de ne pas comprendre.
OriginalL'auteur Erk | 2013-03-13
Vous devez vous connecter pour publier un commentaire.
Vous essayez de redeclare la même stringstream avec le même nom. Vous pouvez modifier votre code comme ceci dans le but de travailler :
Ou comme cela si vous ne voulez pas redeclare :
Vous pouvez également utiliser , ce qui est beaucoup plus rapide :
std::to_string
fonctionne uniquement en C++11.est-il une autre raison de ne pas utiliser
std::to_string
? Comme je l'ai maintenant envisager de remplacerstringstreams
utilisé pour une valeur avecto_string
, mais vous ne savez pas, c'est une bonne idée.OriginalL'auteur Bdloul
La
stringstream
est une variable comme une autre. Pour faire de l'idiome de travail deux fois sans le modifier, le mettre dans des accolades:Depuis C++11, vous pouvez le faire
ou (avec
c
de type arbitraire)Il y a d'autres solutions, bien sûr.
Notez comment j'ai déclaré les cordes ici, en dehors des accolades. Aussi, vous pouvez envisager d'intégrer ce paramètre dans une fonction. (Vous pouvez même appeler la fonction
to_string
pour simplifier la migration éventuelle de C++11.) Copier-coller le code est plus difficile à maintenir.Comment le
( std::stringstream() << b ).str()
idiome de travail? Aussi loin que je peux voir,<<
retourne unostream&
, qui n'a passtr()
.Avant C++11,
std::stringstream() << b
prendrait le flux comme unstd::ostream &
lvalue de référence qui n'accepte pas temporaire. Lorsque les références rvalue ont été ajoutés à la langue, à une surcharge générique a été ajouté à la bibliothèque, donc je devrais mettre à jour la réponse.OriginalL'auteur Potatoswatter
L'erreur que vous obtenez est de vous dire que vous ne pouvez pas déclarer deux variables avec le même nom (
ss
dans votre cas) au sein de la même portée.Si vous voulez créer une nouvelle
stringstream
on pourrait appeler cela de quelque chose d'autre.Mais il y a d'autres façons de convertir un int en une chaîne de caractères.. vous pouvez utiliser std::to_string().
OriginalL'auteur Mike Dinescu
essayer
quel est votre environnement de développement?
J'ai l' #include <string> la déclaration. Je suis à l'aide d'eclipse sur macOS.
Découvrez ce DONC post: stackoverflow.com/questions/7905025/... ...mais il semble que votre chemin d'accès peut être configuré de manière incorrecte.
OriginalL'auteur d.moncada
Assurez-vous de déclarer:
Alors insérez le code:
OriginalL'auteur Joe
L'un de la façon la plus simple que je pense faire c'est:
OriginalL'auteur 4aRk Kn1gh7