String und Integer verbinden
-
Hallo zusammen,
ich würde gerne einen string mit einem integer verbinden.
z.B.string Name = "blabla" und int zahl = 7
sollen nachher so zusammengefügt werden, dass in der Ausgabe
"blabla - 7" ausgegeben wird.Habe es folgendermaßen versucht:
string newName = Name + to_string(zahl)
doch leider wird mir dann nichts mehr ausgegeben. Ich vermute
es liegt an einer falschen Umwandlung von string to integer?Danke für eure Hilfe!
-
das sieht aber eigentlich gut aus. Zeig mal Code
-
Oh sorry, mein Beitrag oben war nicht ganz richtig.
Es passiert folgendes:
Schreibe ichstring newName = Name + zahl
so erhalte ich garkeine Ausgabe.
Schreibe ich hingegenstring newName = Name + to_string(zahl)
bekomme ich folgende Fehlermeldung:
error C2668: 'std::to_string': Mehrdeutiger Aufruf einer überladenen Funktion
kann 'std::string std::to_string(long double)' sein
oder "std::string std::to_string(_ULonglong)"
oder "std::string std::to_string(_Longlong)"
bei Anpassung der Argumentliste '(int)'
-
Was ist "zahl"?
Kann dein Compiler C++11?
-
"Zahl" ist ein integer, der sich aus dem Minimum einiger Zahlen berechnet.
Ehrlich gesagt weiß ich nicht, ob mein Compiler C++11 kann...
-
#include <string>
vergessen?
-
Habe mein Problem mittels stringstream gelöst!
stringstream ss; ss << zahl; newName = name + ss.str()
Falls es auch einfacher geht, nehme ich Verbesserungsvorschläge gerne an
-
Hab hier mal vor längerer zeit irgendwo ein template gesehen welches ich selber ganz gerne nutze.
#include <sstream> #include <string> template<typename T> std::string CastToString(T const &t) { std::stringstream s; s << t; return s.str(); }
Dmit könntest du dann das so realisieren
std::string newString = oldString + CastToString(zahl);
Vorteil:
1. Der Stringstream ist Geschichte sobald die Operation beendet wurde (Scope)
2. Jedem der deinen Code liest wird sehr offensichtlich was du dort machst.
3. Wiederverwertbarkeit des Codes.
-
Deine erste Lösung ist noch die beste.
Wenn Du den Compiler updaten kannst:
Mach das und aktivier anschließend mindestens C++11-Unterstützung fürstd::to_string()
.
-
Das ist ein Fehler in VS2010, dass sie nur die 3 Überladungen anbieten, wodurch dann der wohl häufigste Einsatzbereich (int) uneindeutig wird. Du kannst den Wert casten:
to_string((long long)zahl)
Oder vermutlich besser: Nimm eine aktuelle Version.
-
Lustigerweise kennt die Windows Cygwin Version mit GCC 4.8.1 auch kein std::to_string.
-
Skym0sh0 schrieb:
Lustigerweise kennt die Windows Cygwin Version mit GCC 4.8.1 auch kein std::to_string.
Auch mit -std=c++11 ?
-
Skym0sh0 schrieb:
Lustigerweise kennt die Windows Cygwin Version mit GCC 4.8.1 auch kein std::to_string.
Ja, da ist irgendwas kaputt. Ich habs hässlich gefixt, indem ich einfach ein || true an irgendein #if gehängt hab, was die Existenz verhindert. War irgendwas mit wchar_t Fehlern, die mir egal waren, da ich es eh nicht benutze, oder irgendwie sowas.