当我执行此代码并输入n
的字符串(字符)时,即使我调用clear()
,也不允许我创建新输入。程序结束,我无法在p
中输入值。
#include <iostream>
#include <string>
#include <ios>
#include <vector>
#include <iomanip>
#include <algorithm>
using namespace std;
int main()
{
int n,p;
cin >> n;
cin.clear();
cin >> p;
return 0;
}
答案 0 :(得分:2)
当您输入字符串并且流无法提取这些字符时,您必须ignore
其余字符直到下一行。这是使用ignore
完成的,但最大字符数是要忽略的数量,'\n'
是我们的分隔符。您还必须检查输入是否成功:
if (!(std::cin >> n) || !(std::cin >> p))
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
答案 1 :(得分:0)
缓冲区中可能还有其他字符需要刷新。尝试使用cin.ignore()
以及cin.clear()
。