c – 为什么我的输出转到cout而不是文件?

我正在对具有队列的系统进行一些科学工作.在提交到队列时,cout将输出到日志文件,其名称使用命令行选项指定.但是,我还想要一个单独的输出到文件,我实现如下:

ofstream vout("potential.txt"); ...
vout<<printf("%.3f %.5f\n",Rf*BohrToA,eval(0)*hatocm);

然而它与输出到cout混合在一起,我只在我的potential.txt中得到一些神秘的重复数字.这是缓冲问题吗?其他输出到其他文件的实例工作…也许我应该把这个移出一个cout沉重的区域?

最佳答案
你将你的C和C混合在一起.

printf是c库中的一个函数,它将格式化的字符串打印到标准输出. ofstream及其<< operator是如何以C风格打印到文件的. 这里有两个选项,你可以用C方式或C方式打印出来. C风格:

FILE* vout = fopen("potential.txt", "w");
fprintf(vout, "%.3f %.5f\n",Rf*BohrToA,eval(0)*hatocm);

C风格:

#include <iomanip>
//...
ofstream vout("potential.txt");
vout << fixed << setprecision(3) << (Rf*BohrToA) << " ";
vout << setprecision(5) << (eval(0)*hatocm) << endl;

转载注明原文:c – 为什么我的输出转到cout而不是文件? - 代码日志