string += Problem
-
Finde ich nicht sehr schön, das das funktioniert. Da müsste die Sprache viel strenger sein, und entsprechend der Compiler einen Error melden.
-
Sehe ich keinen Sinn drin. In C/C++ gibt es nicht den Typ Text. Ein char ist einfach nur eine Ganzzahl im Wertebereich von 8 Bit. Letztendlich ergeben sich daraus auch viele Vorteile, die man in anderen Sprachen umständlich anders lösen muss.
Was hab ich mich immer mit Java rum ärgern müssen. Kann natürlich auch sein, dass ich es mir nur unnötig schwer gemacht habe.
-
Wie SeppJ schon schrieb, geht dies nur mit einstelligen Zahlen. Du kannst dir aber mit sprintf() einen String zusammen basteln. Oder halt über einen Stringstream.
Um das nochmal aufzugreifen:
int x = 150; const int bufferSize = 4; char buf[bufferSize]; sprintf_s(buf, bufferSize, %d, x); //das '_s' heißt, das sprintf überprüft ob x nicht vielleicht zuviele zeichen für deinen buffer hat spath += buf;Wobei stringstreams wohl eher der c++ stil sind als sprintf (ob mit oder ohne _s)
-
Hoppala, "" um das '%d' vergessen.
-
...
-
es ist doch viel einfacher x einfach in string umwandeln .
Dann kannst du x zu spath addieren.
-
iritrea schrieb:
Benutz' 'nen stringstream
#include <sstream> ... std::ostringstream s("test/"); s << x << ".txt"; // kein +'0' nötig, funktioniert wie std::cout string path(o.str()); // ich mag keine UN std::cout << path << std::endl;Was genau macht folgende Codezeile:
string path(o.str());
Ich sollte dazu sagen, dass ich noch Anfänger bin. Thx an alle anderen für die Erklärungen.
Wenn ich jetzt die Lösung von iritrea verwende, bekomme ich als ausgabe nur eine Speicheradresse... (0012FF00)
-
path ist ein neuer String, der am Anfang den Wert o.str() bekommt. o.str() ist die Stringrepräsentation des Stringstreampuffers.
Solche Dinge kannst du ganz einfach in einer Referenz nachgucken (und solltest du auch unbedingt selbstständig versuchen, damit du das lernst):
http://www.cplusplus.com/reference/string/string/string/
http://www.cplusplus.com/reference/iostream/ostringstream/str/
-
Danke für eure Hilfe. Habe das Problem jetzt folgendermaßen gelöst:
#include <iostream> #include <sstream> #include <string> using namespace std; int main(void){ for(int x = 1; x < 151; x++){ string spath; stringstream sstr; sstr << x; sstr >> spath; spath += ".txt"; spath.insert(0, "test\\"); cout << spath << endl; /* Konsolenausgabe: test\1.txt test\2.txt test\3.txt test\4.txt */ } system("PAUSE"); return 0; }
-
ostringstream sstr; sstr << "test\\" << x << ".txt"; string spath(sstr.str()); cout << spath << endl;IMHO schöner!