Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ While循环在数组中找不到字符串_C++_Arrays_String_While Loop_Boolean - Fatal编程技术网

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();
    }
}