ここに私のコードの小さなスニペットがあります:
int read_prompt() {
string prompt,fname,lname,input;
int id;
cout << "customers> ";
cin >> prompt;
if (prompt.compare("add") == 0) {
cin >> id;
cin >> fname;
cin >> lname;
NewCustomer(id,fname,lname);
} else if (prompt.compare("print")==0) {
print_array();
} else if (prompt.compare("remove")==0) {
cin >> id;
RemoveCustomer(id);
} else if (prompt.compare("quit")==0) {
return 0;
} else {
cout << "Error!" << endl;
}
read_prompt();
return 0;
}
ユーザーが予期しないものを入力しない限り、これは問題なく機能します。このプログラムが入力「add 125mph Daffy Duck」を渡すことになっているテスト ケースの 1 つは、id が 125 になり、fname が mph に等しく、lname が Daffy に等しくなります。この関数は 3 つの変数をすべて受け取った後、自分自身を再度呼び出してユーザーに再プロンプトを表示します。明らかに出力されます。
ユーザーが入力したときにこのエラーをキャッチするにはどうすればよいですか? この点で使用するのに最適な関数は cin ですか? getline() を調べましたが、実装方法が少しわかりません。