【发布时间】:2018-05-17 23:07:07
【问题描述】:
我不明白为什么在写入文件后会输出“cout”,这对我来说毫无意义......我该如何正确地做到这一点?我尝试在两者之间进行睡眠,但它仍然没有像我想要的那样颠倒顺序。
cout << "Writing to file";
fp = fopen("plume_visualisation.txt","w");
for(int i=0;i<grid;i++)
for(int j=0;j<grid;j++)
for(int k=0;k<grid;k++)
fprintf(fp,"%f\t%f\t%f\t%f\n",x[i],y[j],z[k],suv[i][j][k]);
fclose(fp);
【问题讨论】:
-
这叫做缓冲。到
std::cout的输出被缓冲,并且在缓冲区被刷新之前不会被写入控制台。这真的很重要吗?如果std::cout的输出写得比你预期的晚一点,你有什么问题? -
虽然(如 SPD 所述)这可能是真的,但我很好奇您是如何观察到的?在这个给定的程序中,这种差异通常甚至不明显。
-
稍微相关一点...如果您使用 C++ 编程,为什么不也使用 C++ 流来处理文件?
-
缓冲区可以在 endl 的帮助下被刷新(不过也会产生一个新行)。
-
<< std::flush避免这种情况