问题:为什么我在输入完第一组数据后,输入EOF(Ctrl+D)终止第一组数据输入,第二组数据尚未等我输入即已结束?
相关代码
#include
#include
using namespace std;
int main() {
vector vec1;
vector vec2;
int tmp;
cout << "Input the Vec1`s elements:";
while (cin >> tmp) {
vec1.push_back(tmp);
}
cout << endl << "Input the Vec2`s elements:";
while (cin >> tmp) {
vec2.push_back(tmp);
}
return 0;
}
相关贴图(测试环境:Xcode 7.3.1 OSX EI Capitan)
个人思考
思考:个人认为,本问题应该属于缓冲区问题,可能是EOF(Ctrl+D)留在了缓冲中,然后直接被读入第二组数据,从而第二组数据未读取即结束。但我尝试在读取第二组数据前增添诸如 fflush(stdin)等清空输入缓冲等方法后,依旧无效。求各位高人指教,谢谢!
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
详见 c++ reference/istream
另外,这不是缓冲问题,是 istream 有个表示 eof 的标志位,所以 fflush(stdin) 没用是很正常的。
研究后,判断问题是环境问题,但是目前还没有找到可以解决这个问题的方法,不知道是不是与编译器有关