zeichenketten einlesen - nach dem letzten wort automatisch aufhören
-
Abend zusammen.
schreibe hier gerade ein Programm, das Wörter einliest und sie in einer queue speichert. Das klappt an sich auch alles wunderbar - nur ist meine Wort-eingabe recht unelegant. (benutze Visual Studio 2005)
relevanter Code:
//standard main-kopf, variablen anlegen etc. ...
//unter anderem:string eingabe;
cout<<"Bitte die Woerter eingeben, exit fuer Abbruch\n";
do
{
cin>>eingabe;
if(eingabe=="exit") break;
//dann verarbeite ich die Eingabe mit Funktionen
}
while(1);man muss also immer exit eingeben um aus der eingabe-schleife zu springen. ich hätts nu gern, dass die schleife automatisch endet, wenn das letzte wort eingelesen wurde (die wortanzahl ist zuvor nicht bekannt). habe schon diverse dinge ausprobiert und festgestellt, dass sachen wie if(eingabe=="") (also "nichts, null, nada, niente" ^^ ) nicht funktionieren, da er bei cin>>eingabe erst nach irgendeiner eingabe weiter macht.
würde mich freuen, wenn jmnd. eine idee hat (evtl. über eine scan-variante?). sollte mein gekritzel oben net verstanden werden, bitte ich um entschuldigung - wollte euch nur nicht mit "unnötigen" infos vollspammen^^
grüße - marcus
-
Woher soll dein Computer denn wissen, wann das letzte Wort eingegeben wurde? Das kann doch nur der Eintipper wissen, wenn die Menge vorher unbekannt ist

Und auch n'Abend
-
wow - schnelle reaktion^^
Woher soll dein Computer denn wissen, wann das letzte Wort eingegeben wurde? Das kann doch nur der Eintipper wissen, wenn die Menge vorher unbekannt ist
->dachte es gibt vllt. ein möglichkeit zu testen, ob danach noch etwas eingegeben wurde oder nicht. also, dass das programm quasi das "enter" als abschluss erkennt und sagt: "aha - da is dann also nix mehr --> break"
-
Aso, doch, das geht
Dachte du willst jede Eingabe mit Enter abschließen und der Computer soll wissen wann Schluss ist 
Joar, probiers doch mal mit getline (nur ein Aufruf) und splitte die Zeile dann nach Wörtern auf
-
?!? mit getline liest er doch die komplette zeile ein und tilgt die leerzeichen - ich möchte aber genau ein wort pro queue-element haben.
-
Ich dachte es soll alles bis Enter eingelesen werden? Und du möchtest daraufhin die einzelnen Wörter haben?
-
jo - also der user gibt ein: wort1 wort2 wort3 -enter- und dann soll die schleife die 3 wörter erfassen und separat abspeichern - und dann NICHT in der eingabe-schleife hängenbleiben.
-
Und wo wäre das Problem, wenn du die komplette Zeile einliest und dann die Wörter separat speicherst?
-
als ich das letzte mal getline benutzt hab hatter das so eingelesen wort1wort2wort3 anstatt wort1 wort2 wort3
-
Nöö das kann nicht ^^
std::string tmp; while (std::getline(std::cin, tmp)) { std::istringstream ss(tmp); while (ss >> tmp) std::cout << tmp << std::endl; }... versuch das mal ...sollte dir einlesen, dass dann in die einzellnen Worte(durch Space getrennt) teilen und ausgeben ...