为什么不输出到std :: cout才能单步打印?

时间:2018-11-15 11:42:22

标签: c++ debugging stream gdb iostream

我正在做一个简单的测试。 这是程序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循环时,它不会显示任何内容。为什么会这样呢? 添加:从评论中,我记得有这种缓冲,我可以使用冲洗使其打印。但是我不明白为什么单步执行就不会打印出来。缓冲区应该以某种方式填充并应输出到监视器。为什么? “重复问题”没有给我答案。

0 个答案:

没有答案