cin.clear()不允许我做出新的输入

时间:2014-01-12 00:58:36

标签: c++

当我执行此代码并输入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;
}

2 个答案:

答案 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()