注册 登录
编程论坛 C++教室

问一下getline函数的问题

i80286 发布于 2013-11-27 16:16, 362 次点击
代码如下(相关的定义及头文件件省略):
for (int i = 0; i != 5; i++)
{
    cin >> NUM.num_1;/*int*/
    cin >> NUM.num_2;/*int*/
    getline(cin,NUM.Str);/*string*/
    Arr.push_back(NUM);
}
for (vector<ex>::iterator iter = Arr.begin(); iter != Arr.end(); iter++)
    cout << (*iter).num_1 << "\t" << (*iter).num_2 << "\t" << (*iter).Str << endl;
VS2013下,编译不报错,程序运行后,从键盘输入字符串(即第三项内容),直接就退出了第一个循环,当然第二个循环也就无法输出正确的结果
虽然找到了解决的办法,即在第一个循环的getline语句之前加入cin.clear();cin.sync();后就OK,只是无法理解原因

[ 本帖最后由 i80286 于 2013-11-27 16:45 编辑 ]
1 回复
#2
i802862013-11-27 21:31
想明白了,还是缓冲区的问题
1