我使用MinGW在Windows上运行g ++编译器。每当我运行以下代码时,编译器都会给出奇怪的结果。
代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int n;
string a;
cin>>n;
getline(cin,a);
cout<<a;
return 0;
}
编译代码时没有问题。但是一旦我运行代码并为n提供输入,它就永远不会要求输入和结束。我使用MinGW 5.1.6,有什么问题,或者我的代码有什么问题吗?
答案 0 :(得分:4)
问题在于您的代码。简而言之,您为n
提交数字而输入的换行符仍然存储在输入缓冲区中,因为它不是数字输入,因此n
不会使用它。 getline
函数然后吸收换行并完成。
答案 1 :(得分:3)
cin>>n
读取数字,但将新行留在缓冲区中。当你调用getline
时,它会将换行字符作为空行读出,将其打印出来,然后从main返回。无论如何,在调用getline
之前,您需要从输入缓冲区中获取剩余的行。