c++ Getline()的问题
2015-06-10 13:19
155 查看
今天敲代码用了getline,发现程序崩溃了;
调试之后发现循环下,第二次getline直接刷过了。。
问题代码:
原因:
怀疑是cin>>rate后的换行被getline捕捉
导致直接跳过;
解决方案:
push_back();
后面加个
cin.clear(); // 重置 cin 输入状态
cin.sync(); // 清除 cin 缓冲区未读取信息
但这个方法只能在windows下行得通,在linux下有问题
将sync换成ignore就可以了,也不知道为什么。
据说是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在不同环境下不同。
相关文章推荐
- 线性链表的c语言实现
- OpenGL Tips: 在Visual C++中调用FreeGLUT
- C++ STL之map详解
- const in C and C++
- 【高级算法】禁忌搜索算法解决3SAT问题(C++实现)
- C语言变参数函数
- C语言变参数函数
- C语言变参数函数
- C++之类的static成员
- C++内存模型
- DEV-CPP配置EGE
- c++中的 extern "C"用法
- c++ 鼠标切换形状
- C++ 中的智能指针
- Graham's Scan法求解凸包问题(C++)
- C++构造函数为什么不能是虚函数
- 在C++中嵌入V8
- C++中的哈希容器unordered_map使用示例
- C++中四种类型转换运算符的使用方法
- C语言指向函数的指针