c++ - 使用 `getline(cin, s);` 后使用 `cin >> n;`

标签 c++ stream

int n;
std::cin >> n;

std::string s = "";
std::getline(cin, s);

我注意到,如果我使用 cin,我的程序会在下次到达 getline(cin, rangeInput) 行时挂起。

由于 getline() 使用了 cin,如果我以前使用过 cin,这就是导致程序挂起的原因吗?使用cin后想得到一行怎么办?

最佳答案

您需要清除输入流 - 尝试在您的 cin 之后添加以下内容:

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

this 的公认答案问题很好地解释了为什么/何时需要这样做。

关于c++ - 使用 `getline(cin, s);` 后使用 `cin >> n;`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37237577/

相关文章:

c++ - 如何将非静态成员函数作为模板参数传递给另一个成员函数?

c++ - 删除未使用的包括

javascript - 处理连续的 JSON 流

c++ - 静态转换在 C++ 中无法正常工作

c++ - 具有 2 字节(或更多)原子字节顺序的架构

用于创建类生成线程的多个实例的 C++ 线程模型

c# - 我如何在 t4 预处理模板中使用流而不是 stringbuilder

stream - Storm 中的字段和值连接

c# - 如何从流中准确读取 n 个字节?

Java 流 : Collect a nested collection