cin.clear() 不允许我进行新输入

cin.clear() doesn't allow me to make new input

本文关键字:新输入 输入 允许我 clear 不允许 cin      更新时间:2023-10-16

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

当您输入一串字符并且流无法提取这些字符时,您必须ignore剩余字符直到下一行。这是使用 ignore 完成的,但最大字符数作为要忽略的数量,'n'作为我们的分隔符。您还必须检查输入是否成功:

if (!(std::cin >> n) || !(std::cin >> p))
{
    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
}
缓冲区

中可能还有其他字符需要刷新。尝试使用cin.ignore()cin.clear()