今天敲代码用了getline,发现程序崩溃了;
调试之后发现循环下,第二次getline直接刷过了。。
问题代码:
while (true) {
getline(cin, name);
if (name == "quit")
break;
cin >> rate;
v.push_back(lesson(rate, name));
}
原因:
怀疑是cin>>rate后的换行被getline捕捉
导致直接跳过;
解决方案:
push_back();
后面加个
cin.clear(); // 重置 cin 输入状态
cin.sync(); // 清除 cin 缓冲区未读取信息
但这个方法只能在windows下行得通,在linux下有问题
将sync换成ignore就可以了,也不知道为什么。
据说是getline在不同环境下不同。