zwei Strings -> Zahlen
-
Ach herrje und wiederein mal Belästigung von meiner Seite
Ich möchte zwei Strings in Zahlen umwandeln. Inden FAQ habe ich gefunden, daß ich es über einen stringstream machen sollte:string AlsString("-12"); int d = 0; int i = 0; stringstream Str; Str << AlsString; Str >> d; cout << d << endl; AlsString = "20"; Str << AlsString; Str >> i; cout << i << endl;
soweit so gut, doch bekomme ich nicht die erwartete Ausgabe:
-12
20
sondern:
-12
0Warum? Beim Debuggen stellte ich fest, daß der neue AlsString nicht in Str landet.
Sorry, Ströme sind für mich ein neues Thema mit bodenlosen Löchern
-
hi
du musst den buffer leeren
#include <string> #include <iostream> #include <sstream> using namespace std; int main() { string AlsString("-12"); int d = 0; int i = 0; stringstream Str; Str << AlsString; Str >> d; cout << d << endl; Str.clear(); // Str.ignore(Str.rdbuf()->in_avail()); AlsString = "20"; Str << AlsString; Str >> i; cout << i << endl; }
<edit> stimmt, str.ignore ist hier überflüssig...und die funktion str um jahre besser</edit>
-
vielen Dank
-
vielen Dank
-
Die einfachere Methode dürfte sein, den Buffer zu überschreiben. Also:
#include <string> #include <iostream> #include <sstream> int main() { std::string AlsString("-12"); int d = 0; int i = 0; std::stringstream Str; Str.str(AlsString); //schreibt den Inhalt von AlsString in den stringbuf von Str Str >> d; std::cout << d << std::endl; Str.clear(); //falls was schief gelaufen ist, setzt das hier die Flags wieder auf OK AlsString = "20"; Str.str(AlsString); Str >> i; std::cout << i << std::endl; }