如何在C++中循环语句

如何在C++中循环语句,c++,loops,C++,Loops,我想循环一个问题,让它说“按Y继续”或“按N退出”,但我不知道怎么做。我试着做了一个while循环,但效果不好。代码如下: cout << "press Y to play again or anything else to close: "; cin >> val; if (val != "Y" && val != "y") { spelaIgen = false; } } 我假设你在C++中使

我想循环一个问题,让它说“按Y继续”或“按N退出”,但我不知道怎么做。我试着做了一个while循环,但效果不好。代码如下:

    cout << "press Y to play again or anything else to close: ";
    cin >> val;

    if (val != "Y" && val != "y")
    {
        spelaIgen = false;
    }
}

我假设你在C++中使用标准命名空间。请尝试以下操作:

string val = "Y";

while (val == "Y")
{
    cout << "press Y to play again or anything else to close: ";
    cin >> val;

    if (val != "J" && val != "j")
    {
        spelaIgen = false;
    }
}

你可以这样做。初始化输入变量,然后将该变量用作while条件。继续迭代while循环,直到它们输入除“y”或“y”以外的内容


最适合您使用cases来选择Y或N。您所做的尝试会使Y以外的任何字符退出

bool correctVal = false;
char val;

while (!correctVal)
{
    cout << "press Y to play again or N to close: ";
    cin >> val;
        switch(val)
        {
            case 'y':
            case 'Y':
                spelaIgen = false;
                correctVal = true;
                break;
            case 'n':
            case 'N':
                spelaIgen = true;
                correctVal = true;
                break;
            default:
                cout << "\nInvalid entry!" << endl;
        }
}

由于OP使用C++,所以使用STD::String、STD::Trime:STD::ToWoWER。没有理由恢复C风格的字符串。我稍后会尝试,但是有没有办法让您选择,按Y键重新播放,或按N键退出@劳伦斯·艾尔洛贝特。我建议使用std::transform和std::tolower将文本转换为所有小写形式,这样您只需要在val!=J通过将文本转换为全大写或全小写,您无需进行第二次比较。@ThomasMatthews好的,我是否只需键入std::transform?嗯,好的,我也会尝试一下,但正如我问LawrenceAiello的那样,有没有办法选择按Y再次播放或按N退出?当然,但是,如果他们既不输入y也不输入n,例如,如果他们输入a,你想做什么?看起来更好,或者有确切的原因感谢工作,你有关于如何使用案例和中断的指南吗?顺便说一句,这是了解开关使用的一个很好的资源,我把它看作是开关标识变量,case标识值,break将把您移出开关,默认值的使用几乎与else语句一样。
bool correctVal = false;
char val;

while (!correctVal)
{
    cout << "press Y to play again or N to close: ";
    cin >> val;
        switch(val)
        {
            case 'y':
            case 'Y':
                spelaIgen = false;
                correctVal = true;
                break;
            case 'n':
            case 'N':
                spelaIgen = true;
                correctVal = true;
                break;
            default:
                cout << "\nInvalid entry!" << endl;
        }
}