C++ 正在检查\n字符,但之后什么都不检查
我们正在努力获得一个简单的程序,根据用户的输入判断海龟是否产卵 海龟从8个蛋开始,当用户按Enter键时只下一个蛋。('\n') 我们终于让它工作了,如果我们按Enter键,它会说海龟下了一个蛋,然后倒数到剩下的0个蛋。它也会说,如果你键入其他任何内容,就不会下蛋 我们面临的问题是,如果有人使用cin.ignore命令输入了多个不正确的字符,就不能让它多次返回'else'语句 但是,我们质疑如果只输入cin.ignore(10,“\n”),并且输入超过10个字符,会发生什么。答案是,它重复了“else”不产卵的说法 有没有一种方法可以清除第一个字符后的输入流,这样输入就可以达到他们想要的数量,并且对于每个输入,它仍然只返回一行(不管是否下蛋) 这是代码C++ 正在检查\n字符,但之后什么都不检查,c++,C++,我们正在努力获得一个简单的程序,根据用户的输入判断海龟是否产卵 海龟从8个蛋开始,当用户按Enter键时只下一个蛋。('\n') 我们终于让它工作了,如果我们按Enter键,它会说海龟下了一个蛋,然后倒数到剩下的0个蛋。它也会说,如果你键入其他任何内容,就不会下蛋 我们面临的问题是,如果有人使用cin.ignore命令输入了多个不正确的字符,就不能让它多次返回'else'语句 但是,我们质疑如果只输入cin.ignore(10,“\n”),并且输入超过10个字符,会发生什么。答案是,它重复了“e
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。谢谢。