c++程序:为什么在下面代码中name的输出会多出一个’\n‘?

c++程序:为什么在下面代码中name的输出会多出一个’\n‘?

问题描述:

为什么在下面代码中name的输出会多出一个’\n‘?不是 cin.clear()和cin.sync()把缓冲区清空了吗?

 int main()
{
    double x, mid_homework;
    vector<double> homework;
    while (cin >> x) {
        homework.push_back(x);
    }
    cin.clear();
    cin.sync();

    string name;
    cout << "test" << endl;
    cin >> name;
    cout << name <<endl;
    system("pause");
    return 0;
}

图片说明

可能是把回车键放缓冲区识别了

测试了没有\n图片说明

试试这个用这个,我认为是因为你按回车的时候,它在缓冲区

     char name[20];
    cout << "test" << endl;
    cin.getline(name,sizeof(name));

你换一个开发平台比如VS2010重新执行一下,应该就没有了。这个和编译平台有关的。