C++ 正在检查\n字符,但之后什么都不检查

C++ 正在检查\n字符,但之后什么都不检查,c++,C++,我们正在努力获得一个简单的程序,根据用户的输入判断海龟是否产卵 海龟从8个蛋开始,当用户按Enter键时只下一个蛋。('\n') 我们终于让它工作了,如果我们按Enter键,它会说海龟下了一个蛋,然后倒数到剩下的0个蛋。它也会说,如果你键入其他任何内容,就不会下蛋 我们面临的问题是,如果有人使用cin.ignore命令输入了多个不正确的字符,就不能让它多次返回'else'语句 但是,我们质疑如果只输入cin.ignore(10,“\n”),并且输入超过10个字符,会发生什么。答案是,它重复了“e

我们正在努力获得一个简单的程序,根据用户的输入判断海龟是否产卵

海龟从8个蛋开始,当用户按Enter键时只下一个蛋。('\n')

我们终于让它工作了,如果我们按Enter键,它会说海龟下了一个蛋,然后倒数到剩下的0个蛋。它也会说,如果你键入其他任何内容,就不会下蛋

我们面临的问题是,如果有人使用cin.ignore命令输入了多个不正确的字符,就不能让它多次返回'else'语句

但是,我们质疑如果只输入cin.ignore(10,“\n”),并且输入超过10个字符,会发生什么。答案是,它重复了“else”不产卵的说法

有没有一种方法可以清除第一个字符后的输入流,这样输入就可以达到他们想要的数量,并且对于每个输入,它仍然只返回一行(不管是否下蛋)

这是代码

int main()
{
    using namespace std;

    int eggs = 8;
    char input;

    while (eggs > 0)
    {
        cout << "Enter input: ";
        cin.get(input);

        if (input == '\n')
        {
            cout << "Raphie laid an egg because you pressed enter.\n";
            eggs--;
            cout << "She has " << eggs << " left.\n";
        }

        else
        {
            cout << "Raphie didn't lay an egg.\n";
            cin.ignore(10, '\n');
        }
    }

    return 0;
}    
intmain()
{
使用名称空间std;
int=8;
字符输入;
而(鸡蛋>0)
{

不能通常,您希望以行或单个字符阅读。请注意“\n”在这两个类别中是如何匹配的

如果您仍然希望(或必须)继续忽略字符,可以尝试完全忽略
数值限制::max()
,这是任何给定时间流中的最大字符数。

int main()
int main()

{

using namespace std;

int eggs = 8;
char input;

while (eggs > 0)
{
    cout << "Enter input: ";
    cin.get(input);

    if (input == '\n')
    {
        if (eggs > 0)
        {
            cout << "Raphie laid an egg because you pressed enter.\n";
            eggs--;
            cout << "She has " << eggs << " left.\n";
        }
    }

    else
    {
        cout << "Raphie didn't lay an egg.\n";
        cin.ignore(10, '\n');
    }
}

return 0;
}
{ 使用名称空间std; int=8; 字符输入; 而(鸡蛋>0) { cout(0) { 你可以用

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.ignore(std::numeric_limits::max(),'\n');

…在换行之前忽略任何数量的输入。

我不太清楚为什么代码没有完全格式化,但所讨论的部分看起来还可以,所以我将保留它。惯例是所有代码行都以4个空格开头。您会习惯的。我不附加任何方法。我只是想找到一种方法来使用\n作为输入/条件来执行任务。你能推荐另一种方法吗?我相信你能告诉我,但我才刚刚开始学习,所以越简单越好。最简单的选择是要么坚持按单键(类似的东西),要么坚持整行(键入“下蛋”下蛋,或者什么都不做)。我必须查看std::streamsize。谢谢。