cin 溢出到后面的 cin

Cin overflowing into following cin

我有一个简单的程序,当输入完全符合预期时,它可以在名义上工作。

#include <iostream>
using namespace std;

int main ()
{
    int a, b;
    char ab;

    cin >> a;
    cin >> ab;
    cin >> b;

    cout << a;
    cout << ab;
    cout << b;
}

这在输入正常的情况下完美运行;但是,当第二个 cin 运行时,它将余数输入到下一个 cin 调用中。

所以这个案例的输出看起来像:

4
454

4
4
54

如何处理 cin 缓冲区中的额外内容以防止它进入下一个缓冲区?

您可以使用 getline:

而不是 cin
string input;
getline(cin, input);

通过这种方式,您将把输入作为行,这样您就不会为缓冲区或其他任何事情而烦恼。之后就可以解析了。