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);
通过这种方式,您将把输入作为行,这样您就不会为缓冲区或其他任何事情而烦恼。之后就可以解析了。
我有一个简单的程序,当输入完全符合预期时,它可以在名义上工作。
#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);
通过这种方式,您将把输入作为行,这样您就不会为缓冲区或其他任何事情而烦恼。之后就可以解析了。