C++中的重复循环
Repeating loop in C++
下面是C++中一个简单菜单的代码。出于某种原因,如果你给它垃圾输入,它会做出正确的反应("请重试你的选择")。然而,它将再次通过循环,再次给出错误消息,然后最终恢复正常工作。
编辑
输入变量是一个字符。如果垃圾输入只有一个字符长,那么循环就可以正常工作。如果有任何额外的字符会导致循环被执行多次,然后用户才能再次输入任何内容。
char input = 0;
while (input != 4)
{
cout << "1. Circle";
cout << "n2. Rectangle";
cout << "n3. Triangle";
cout << "n4. Quit";
cout << "nChoose a shape: ";
cin >> input;
switch(input)
{
case '1':
circleFunctions();
break;
case '2':
rectangleFunctions();
break;
case '3':
triangleFunctions();
break;
case '4':
exit(4);
default:
cout << "nPlease try your selection again...n";
input = NULL;
cin.ignore();
break;
}
cin.ignore();
cout << "n";
}
当遇到默认情况时,只需清除输入缓冲区
std::cin.clear();
之后忽略输入流中的所有内容,
std::cin.ignore(INT_MAX);
这应该使cin缓冲区处于良好状态,提取运算符(>>)应该正常工作。
找到了答案。在cin.ignore中添加以下参数使其工作:
cin.ignore(20, 'n');
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 在基于范围的for循环中使用结构化绑定声明
- 用于C++中带有数组和指针的循环
- 循环中的随机函数
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 在循环C++中指定字符串之后,不会打印该字符串