mini-konsole (kleines problem wenn man nichts eingibt)
-
hallo,
ich wollte ne kleine minikonsole programmieren
hier erstmal ein bissl code:string cmd; while(true) { cout<<"tim>"; cin>>cmd; if(cmd.empty()==false) { cout<<"test"<<endl; //Ausdruck Parsen } }wenn ich jetzt nichts eingebe soll wieder "tim>" erscheinen
beispiel:
tim>hallo [ENTER]
test
tim> [ENTER]
tim> <<<und hier wartet das programm so lange bis ich etwas eingebe
<<<wie kann ich das verhintern?Vielen Dank
-
Nimm statt cin getline.
std::string cmd; for (;;) { std::cout << prompt; std::getline (cin, cmd); if (cmd == "exit") break; else tu_was (cmd); }
-
schau dir noch boost an. www.boost.org
der kann schnell und einfach die eingabe parsen. z.B. regex.
http://cplus.kompf.de/artikel/regex.html
dann gibt es noch ein perser speziel fuer cmd.
Gg
-
Sind Reguläre Ausdrücke wirklich der richtige Weg, um eine Kommandozeile zu parsen?! Ich hab das immer entweder mit einem komplett manuell geschriebenen Parser oder mit Spirit gemacht.
-
boost::spirit kenne ich zu wenig bzw. gar nicht.
soviel ich gelesen habe, ist es wohl auch eine moeglichkeit.Versuche die Process und threads selbst zu progen.
system oder fpopen sind nur ne "anfaenger" loesung.
Dann weist du was es macht, und was du hast
Gg