我不明白为什么“cout”会在文件写入后输出,这对我来说毫无意义……我该如何正确执行?我尝试在两者之间 sleep ,但它仍然没有像我想要的那样颠倒顺序。
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);
最佳答案
C++ 写入输出流,存储在缓冲区中。您需要刷新缓冲区以将其写入控制台。还记得您可能是如何学会向控制台写入一行的吗?
std::cout << "This is a message" << std::endl;
std::endl 所做的是在消息末尾放置一个换行符,并刷新缓冲区。根据您的代码,我猜您认为“嘿,我可以离开 endl,它不会写新行。”这是一个很好的思考方式……但您可能没有意识到 endl 也会刷新缓冲区。这就是你想要的:
std::cout << "Writing to file" << std::flush;
另请注意我如何在 cout 和 flush 前加上“std”。使用“使用命名空间标准”是您应该避免的不良做法。
与此相关,您已经在使用 C++。不是以 fprintf 的旧 C 方式执行文件 IO,而是设置文件流。它的工作方式与控制台 IO 的工作方式几乎相同。这是关于如何以更惯用的方式做你正在做的事情的很好的指南:http://www.cplusplus.com/doc/tutorial/files/
关于c++ - Printf Fprintf 输出顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50401654/