您的位置:首页 > 编程语言 > C语言/C++

c++ Getline()的问题

2015-06-10 13:19 155 查看
今天敲代码用了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在不同环境下不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: