我正在做一个简单的测试。 这是程序test1.cpp
#include <fstream>
#include <iostream>
int main()
{
std::ifstream fin;
fin.open("data.txt");
char tmp[10];
for(int i=0;i<5;i++) {
fin >> tmp;
std::cout << "tmp = " << tmp << " ";
}
std::cout << std::endl;
fin.close();
}
,这是文件data.txt。
1234
5678
9abc
39ab
539b
运行程序时,(我用make CPPFLAGS+=-g test1
进行编译)得到
tmp = 1234 tmp = 5678 tmp = 9abc tmp = 39ab tmp = 539b
我可以使用调试器运行它(我在ddd中使用了gdb)。结果是一样的。但是,当我单步执行for循环时,它不会显示任何内容。为什么会这样呢? 添加:从评论中,我记得有这种缓冲,我可以使用冲洗使其打印。但是我不明白为什么单步执行就不会打印出来。缓冲区应该以某种方式填充并应输出到监视器。为什么? “重复问题”没有给我答案。