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


Log in to reply