iostream的问题

时间:2010-08-25 18:20:11

标签: c++ gcc mingw

我使用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,有什么问题,或者我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:4)

问题在于您的代码。简而言之,您为n提交数字而输入的换行符仍然存储在输入缓冲区中,因为它不是数字输入,因此n不会使用它。 getline函数然后吸收换行并完成。

答案 1 :(得分:3)

cin>>n读取数字,但将新行留在缓冲区中。当你调用getline时,它会将换行字符作为空行读出,将其打印出来,然后从main返回。无论如何,在调用getline之前,您需要从输入缓冲区中获取剩余的行。