eingabe mit parameter
-
hallo
ich versuche es im moment so:int main() { string command; int value; while(1){ cout<<"Enter Command: "; cin>>command; cin>>value; if (command=="test" && value>=0 && value <= 1000000) { cout<<command<<" set to "<<value<<endl; } else{cout<<"command doesnt exist"<<endl;} } return 0; }wenn jetzt zb test 1000 eingebe, geht es
aber wenn ich test100 oder test eingebe stürtz es abkann mir einer bitte eine mögliche lösung geben?
danke
-
Überprüf mal, was die Variabeln für Werte annehmen. (Debugger).
-
Verwende lieber std::readline() für das Einlesen und pfriemel deinen String danach auseinander. Dann gibts auch keine ärgerlichen Reste im Konsolenpuffer.
-
CantStOp schrieb:
...
int main() { string command; int value; while(1){ cout<<"Enter Command: "; cin>>command; cin>>value; if (command=="test" && value>=0 && value <= 1000000) { cout<<command<<" set to "<<value<<endl; } else{cout<<"command doesnt exist"<<endl;} } return 0; }wenn jetzt zb test 1000 eingebe, geht es
aber wenn ich test100 oder test eingebe stürtz es ab...Also einen Auslöser für einen "Absturz" (= Speicherzugriffsfehler o.ä.) kann ich in dem Code nicht sehen ... aber dass er beim "cin >> zahl" stehenbleibt, halte ich für ganz normal....
Wichtig: Dein Eingaben überprüfenif(!cin>>value) throw std::invalid_argument("Keine Zahl");Gruß,
Simon2.
-
hi David_pb
std::readline() hört sich gut an könntest du mir ein beispiel zeigen bitte?
danke
-
Er meint wahrscheinlich eher getline.
-
so ich habs gelöst
danke vielmalsso funktioniert es prima
while(1){ string rawcommand; cout<<"Enter Command: "; getline( cin, rawcommand ); string command = rawcommand.substr(0, rawcommand.find(" ")); int value = atoi(rawcommand.substr(rawcommand.find(" ")+1).c_str()); if (command=="test" && value>=0 && value <= 1000000) { cout<<command<<" set to "<<value<<endl; } else{cout<<"invalid command"<<endl;} }vielleicht hat ja der eine oder der andere trotzdem noch einen verbesserungsvorschllag
