问一下getline函数的问题
代码如下(相关的定义及头文件件省略):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 编辑 ]