c++无法清除inputStream
c++ unable to clear inputStream
我是c++新手,正试图创建一个基本程序。请求两个值并将结果存储在单独的变量中,如下所示:
#include <iostream>
using namespace std;
int main () {
int sizeOfArray = -1, bufferSize = -1;
while (true){
cout << "Enter the size of the array: " << endl;
cin >> sizeOfArray;
if (cin.fail())
cin.clear();
cout << "Enter the size of the buffer (k): " << endl;
cin >> bufferSize;
if (cin.fail())
cin.clear();
if (sizeOfArray > 0 && bufferSize > 0){
break;
}
}
return 0;
}
然而,当输入一个不是int类型的值而不是清除并要求下一个输入时,我遇到了一个无限while循环,如下所示:
输入数组的大小:输入缓冲区大小(k):输入数组的大小:输入缓冲区大小(k):输入数组的大小:输入缓冲区大小(k):输入数组的大小:输入缓冲区大小(k):输入数组的大小:输入缓冲区大小(k):输入数组的大小:输入缓冲区大小(k):输入数组的大小:输入缓冲区大小(k):输入数组的大小:输入缓冲区大小(k):^ C
cin.clear()
清除cin
的状态。它不会从流中删除有问题的输入。您需要添加代码来忽略该行的其余部分。
if (cin.fail())
{
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
}
添加#include <limits>
能够使用std::numeric_limits
.
了解std::istream::ignore
的更多信息
相关文章:
- 清除前检查矢量
- ifstream文件在从行中读取时被清除
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 如何清除/清空已打开的文件C++
- 如何在 c++ 中清除矢量容量?
- 可以清除递归函数中的变量吗?
- 在清除 istream 之前,我不应该需要取消获取它吗?
- 结构成员在访问时被清除
- 清除输入缓冲区后未提取字符串流
- SDL_ttf清除我之前和将来的所有渲染
- 如何使用内存集清除字符数组
- 有没有办法在c ++中清除空数组,请检查下面的代码以获取说明
- QTreeWidgetItem 设置不可选择将清除选择
- libQGLViewer 如何在没有清除缓冲区的情况下绘制
- 清除具有已删除赋值运算符的成员的类实例
- 清除结构向量时会发生什么?
- 显式清除 std::move 之后的源资源
- C++ - 重置字符串流不会重置获取位置或清除标志吗?
- std::cin 在读取 EOF 并清除后不再读取
- c++无法清除inputStream