Suche lösung bei einer cin >> _a >> _b; Auswertung!
-
hallo leute, ich bräuchte mal hilfe bei der auswertung einer
cin >> _a >> _b;ich hab da mal was vorbereitet
also:main() { string _a; strinf _b; cout << " Gib ein oder zwei Woerter ein! " << endl; cin >> _a (;cin)>> _b; // Auswertung if( !( _b ) ) { _b = ""; } cout << _a << _b << endl; getchar(); return 0; }also was ich möchte ist, dass wenn ich eine Eingabe für _a getätigt habe und in _b nich also zB nur schreibe hallo, das _b ignoriert wird. aber wenn ich hallo welt schreibe das er mir hier _b nicht ignoriert. also auf was ich hinaus will ist, dass:
ich habe hier eine Eingabekontrolle:[...] if( _a == hallo ) { if( _b == welt ) { cout << " eingabe war hallo welt" << endl; } cout << " eingabe war hallo " << endl; }also ich hoffe es ist einiger maßen verständlich was ich möchte. doch das problem ist ja das das prog ja eine zweite eingabe bestätigung verlangt. kann man das nicht irgendwie ignorieren???
-
Du kannst z.B. per getline() eingeben und anschließend den String von Hand aufdröseln (indem du nach dem ersten Whitespace suchst und ihn dort teilst).
-
Hallo,
Das geht so nicht. Lies den kompletten String lieber mit getline ein und trenne danach die Wörter.
string tstr; getline(cin, tstr); stringstream str(tstr); string astr, bstr; str >> astr >> bstr; // Dann die Auswertung[edit]Viel zu spät. [edit]
-
höö?
@braunstein, ich blick bei deinem code nich durch köönntest mir den mal erklären?string tstr; // erstellt einen string
getline(cin, tstr); // hier soll in den string geschrieben werden
stringstream str(tstr); // ?, das ist mir und klar
string astr, bstr; // hier kommen meine strings _a, _b
str >> astr >> bstr; // und was passiert hier? _a und _b werden in str geschrieben???und wie kann ich das machen das der mir die wörter aus einander flügt, hab das noch nie gemacht....
-
Ok
string tstr; getline(cin, tstr); // Einlesen des Strings von der Standardeingabe stringstream str(tstr); // Erzeugen eines stringstreams mit dem eingelesenen String als Inhalt string astr, bstr; str >> astr >> bstr; // Auslesen aus dem Stringstream in die Variablen, getrennt wird an Leerzeichen bzw. Tabs // Wieder zusammenfügen string erg = astr; erg += " "; erg += bstr;
-
hmm.. so einleuchten tuts mir noch nicht so ganz.... also ich lese per
getline(); ein string ein. sagen wir mal "hallo welt", so nun mache ich mit stringstrem str, ein ja kA stream? wo diese worte "hallo welt" drine stehen.und nun?
str >> _a >> _b; // hier macht der das auslesen automatisch???? also steht dann in _a "hallo" und in _b "welt oder wie? aber ich dachte den operator ">>" benutzt man um zeichen einzulesen?
-
bei mir kommt da folgender Fehler:
variable `std::stringstream str' has initializer but incomplete type
-
Einen Stringstream kannst du genauso verwenden wie jeden anderen Stream auch (z.B. cin). Der Vorteil an der Stelle ist, daß er nicht auf eine Eingabe des Benutzers wartet, sondern den Inhalt seines internen Speichers auswertet. Und wenn er nach dem Auslesen von 'astr' nichts mehr findet, setzt er das eofbit und schreibt nichts in 'bstr' rein.
PS: Lies dir mal meinen Magazin-Artikel zum Thema IOStreams durch

Edit @alex: Hast du auch den Header <sstream> eingebunden?
-
hmmm ok mach ich... ich mach jetzt erst mal frühstückspause, hehe schau heute abend noch mal rein.
gruss tobi...
PS: war meine denkweise wie ich sei dort geschrieben habe nun richtig interprtiert????
-
jetzt ja!

-
könnte noch mal jemand nen command geben?