c++ - 在再次读取 `std::cin` 之前如何清除它的内容?

标签 c++ iostream cin

我正在尝试读取单个字符多次。问题是我需要防止用户错误。例如:

char arr[10];
for(int i = 0; i < 10; i++)
{
    cin.get(arr[i]);
} 

其中输入应为 a, b, c, d, ...。但是,如果有人要为第一个条目输入 ab,我想捕获 a,然后忽略 b。我知道 cin.ignore 但是我不知道如何忽略任意数量的字母数字字符或符号,因为我想忽略可能无限数量的字符然后停止忽略和再读一遍。

我怎样才能忽略任意数量的字符然后停止忽略或者我怎样才能实际刷新 cin 的缓冲区。

最佳答案

大多数输入都是换行,所以如果你想忽略输入流中的所有字符直到你换行,那么你可以使用:

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

由于我们忽略了 streamsize,因此输入缓冲区中不应该有额外的内容。

关于c++ - 在再次读取 `std::cin` 之前如何清除它的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32895730/

相关文章:

c++使用计算参数调用父类(super class)构造函数

c++ - Cin 没有得到正确的输入

C++ 如何区分 std::cin 和 std::ifstream?

c++ wininet ftp列出许多文件错误

c++ - 将char数组转换为int数组c++

C++从指针调用成员函数在引入参数时调用内存访问冲突

c++ - iostream导致与另一个库不匹配

c++ - C++ 程序上的 iostream.h 问题

c++ - 读取一些整数然后在 C++ 中读取一行文本

c++ - std::cin.getline(f_name, 10)