C++ While循环在数组中找不到字符串
我在程序中添加了一个函数,允许用户从两种可用语言(英语和法语)中选择一种。我还添加了可接受输入的列表:C++ While循环在数组中找不到字符串,c++,arrays,string,while-loop,boolean,C++,Arrays,String,While Loop,Boolean,我在程序中添加了一个函数,允许用户从两种可用语言(英语和法语)中选择一种。我还添加了可接受输入的列表: 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
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";
}
不幸的是,即使在
LangList
中找不到语言,isLangVerified
也会变成true
,导致它抛出异常 因此,主要问题是您试图将迭代器设置为bool isLangVerified
。我建议您循环数组,看看输入是否存储在数组中
std::array<std::string,4> LangList = { "1", "en", "2", "fr" };
bool isLangVerified = false;
while (true)
{
std::cout << "(1) ENGLISH, (2) FRANCAIS" << std::endl;
std::cout << "Language number: ";
std::cin >> language;
for(int i = 0; i < LangList.size() - 1; i++)
{
if(LangList[i] == language)
{
isLangVerified = true;
}
}
if (isLangVerified)
{
std::cout << "Language: ";
output("ENGLISH\n", "FRANCAIS\n");
break;
}
else
{
std::cout << "ERROR!\n" << std::endl;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.clear();
}
}
std::array LangList={“1”、“en”、“2”、“fr”};
bool isLangVerified=false;
while(true)
{
std::难道你不相信isLangVerified
会在语言更改时神奇地更新自己吗?它不会。你计算它一次,它会保持它的值。我不知道这个循环怎么能调用输出
。如果你说是这样,那意味着你在这里显示的代码与你所使用的代码不同如果(isLangVerified){
,它将永远不会进入内部,因为isLangVerified
在这一点上始终为falsepoint@IgorTandetnik谢谢你的建议。更新了代码。你能粘贴你当前的主文件吗。cpp@MegaSniperBfor的中LangList.size()
的语法有问题(int i=0;i
。不用担心使用您的pastebin代码它会工作。谢谢!
std::array<std::string,4> LangList = { "1", "en", "2", "fr" };
bool isLangVerified = false;
while (true)
{
std::cout << "(1) ENGLISH, (2) FRANCAIS" << std::endl;
std::cout << "Language number: ";
std::cin >> language;
for(int i = 0; i < LangList.size() - 1; i++)
{
if(LangList[i] == language)
{
isLangVerified = true;
}
}
if (isLangVerified)
{
std::cout << "Language: ";
output("ENGLISH\n", "FRANCAIS\n");
break;
}
else
{
std::cout << "ERROR!\n" << std::endl;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.clear();
}
}