gpt4 book ai didi

c++ - Printf Fprintf 输出顺序

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:05 24 4
gpt4 key购买 nike

我不明白为什么“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com