在C 中清除CIN
Clear cin in C++
可能的重复:
为什么这个唱片读书?
我超载了ISTream运算符(istream &operator>>...
),并以某个格式计算:
(<x-coordinate>,<y-coordinate>)
我想测试多个(10)次,因此写了:
for (int i = 0; i < 10; i++) {
cin >> a;
if (!cin.fail()) { cout << a << endl; }
else { cout << "Invalid input!" << endl; cin.clear(); }
}
编辑:
我现在有以下代码:
for (int i = 0; i < 10; i++) {
cin >> a;
if (!cin.fail()) { cout << a << endl; }
else {
cout << "Invalid input!" << endl; cin.clear();
while (!cin.eof()) { cin.ignore(); } cin.ignore();
}
}
Cthulhu提出了忽略。但是,问题是CIN仍然输出"无效的输入!"在遍历上面的代码之后:
(3,3) <-- input
(3,3) <-- output
Invalid output! <-- second output
有办法可以清除CIN中的内容?
cin.clear()
不会空缓冲区,它在流上重置错误标志。然后您必须致电 cin.ignore
istream& ignore ( streamsize n = 1, int delim = EOF );
从输入序列中提取字符并丢弃它们。
提取n个字符时,提取结束,并且 被丢弃或发现角色特征时,以先到者为准。 在后一种情况下,还提取了特定字符。
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
数字限制
相关文章:
- C++中的cin.ignore()函数不适用于整个流
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- Problems with std::cin.fail()
- 清除前检查矢量
- 由cin中的字符串中未捕获空白引起的分割错误
- 在C++中使用Cin,我如何在1行中输入
- ifstream文件在从行中读取时被清除
- std::cin 在读取 EOF 并清除后不再读取
- 在C 中清除CIN
- cin.clear() 如何清除输入缓冲区
- 如何清除cin读取的内容
- 检查C++字符串中的整数:已修订:清除 cin
- 为什么我的编译器在尝试清除 CIN 缓冲区时抱怨
- 当用户输入错误输入时,一次清除 cin 中的整行而不是一个字符
- 使用GetAsyncKeyState()时,C++正在清除cin缓冲区
- cin.ignore(INT_MAX)正在清除所有内容
- 不停止,清除cin创建无限循环
- 使用cin对象进行输入验证并清除缓冲区(c++)
- 检查输入的值是否为float,清除cin
- 如何从cin中清除无关字符