【发布时间】:2017-04-10 10:40:57
【问题描述】:
我在我的程序中添加了一个功能,允许用户选择两种可用语言(英语和法语)中的一种。我还添加了可接受的输入列表:
string language;
string LangList[] = { "1", "en", "2", "fr" };
void output(string en, string fr) {
if (language == "1" || language == "en")
cout << en;
else if (language == "2" || language == "fr")
cout << fr;
else
throw "LANGUAGE";
}
下面的while 循环被写入重复自身,直到language 等于LangList 中的字符串之一。
while (true) {
cout << "(1) ENGLISH, (2) FRANCAIS" << endl;
cout << "Language number: ";
cin >> language;
bool isLangVerified = find(begin(LangList), end(LangList), language);
cin.ignore(numeric_limits<streamsize>::max(), '\n');
if (isLangVerified) {
cout << "Language: ";
output("ENGLISH\n", "FRANCAIS\n");
break;
}
else {
cout << "ERROR!\n" << endl;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.clear();
}
}
不幸的是,即使在LangList 中找不到language,isLangVerified 也会变成true,导致它抛出异常。
【问题讨论】:
-
您似乎相信
isLangVerified会在language更改时神奇地自我更新。它不会。你计算一次,它就保持它的价值。我看不出这个循环怎么会调用output。如果你这么说,那就意味着你在这里显示的代码与你实际运行的代码不同。 -
它永远不会进入
if (isLangVerified) {,因为此时isLangVerified总是错误的 -
@IgorTandetnik 谢谢你的建议。更新了代码。
-
能否将您当前的 main.cpp 粘贴到 bin 中
-
@MegaSniperB pastebin.com/Y00pr09r
标签: c++ arrays string while-loop boolean