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