komanndozeile



  • wieso hab ich bei diesem code wiederholungen obwohl ich nur einmal teste?

    void input(void) {
     std::string input, sub1, sub2; 
     std::cout << dir->gwd() << '>'; std::cin >> input;
    
     std::cout << input.substr(0, input.find(' '));
    }
    
    int main(int argc, char *argv[]) { 
    
     while(1) { input(); }
    
    }
    

    dir->gwd() ist hier mal nebensächlich...

    bei eingabe von: das war leicht
    kommt: daswarleicht
    obwohl ich dann nur mit 'das' arbeiten möchte und die schleife müsste doch bei std::cin wieder stoppen oder nicht?



  • Mit der Schleife

    while(1){ ... }
    

    erstellst du eine Endlosschleife, da 1 für true steht.

    Wenn du die gesamte Zeile mit Leerzeichen einlesen möchtest, benutzt du am besten

    std::getline(std::cin, input)
    

    Wenn du nur das erste Wort haben willst und das nächste durch eine Leerstelle davon getrennt wird, dann musst du anschließend nur den Eingabepuffer mit

    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    

    leeren. Dann liest der pro Durchlauf auch nur das erste Wort ein und er wartet auch auf eine neue Eingabe.



  • wenn du nur "das" haben möchtest, dann schau dir den Link mal an

    http://www.cplusplus.com/reference/string/string/find_first_of/



  • danke hat sich erledigt


Anmelden zum Antworten