c++ - 执行 cin 后计算标准输入中的字符数

标签 c++ cin

我有一些代码基本上是这样的

int a;
cin>>a;

if(!cin.good())
{
    std::cin.clear();
    std::cin.ignore(2);

    // set some default value for 'a' and display some messages
}

如果我给出一个整数(如预期的那样)或者如果我尝试稍微弄乱它并给出最多 2 个字符,这就可以正常工作。例如。 'ss' ,但如果我给出 3 个字符的输入 'sss' ,最后一个 's' 不会被忽略,并被接受为我程序中的更多 cin 的输入。

在第一个 cin 发生后,有什么方法可以计算标准输入(缓冲区?)中的字符数,这样我就可以安全地忽略所有这些字符。

最佳答案

这是如何运作的?它应该忽略输入缓冲区中可用的所有内容,以防止稍后使用第三个 s。它使用 std::basic_streambuf::in_avail .

std::cin.ignore(std::cin.rdbuf()->in_avail());

如果这不起作用,您可以尝试忽略直到换行。

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

关于c++ - 执行 cin 后计算标准输入中的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12242078/

相关文章:

c++ - 如何设置opengl中显示的音量

c++ - 编译错误

C++ .find() 函数在目录中搜索文件名

c++ - 视差着色器

c++ - 错误没有运算符 ">>"匹配这些操作数

c++ - Linux 和 Windows 下混合 cin 和 getline

c++ - CIN 回路不工作

c++ - 我希望 cin 读取到 '\n' 但我不能使用 getline

c++ - 使用 cin.get() 似乎无法读取我期望的字符。怎么了?

c++ - 属性QtObject marginHints:QtObject {…}