0

C++ 关于 stdio.h 改变标准输出

我有一个打印出一些数据的功能。

//overallSummary是一个将数据打印到控制台的 void 返回类型函数。它按预期工作。

我想保存到一个文本文件,所以我这样做了

#include <stdio.h>

freopen("summary.txt","w",stdout);
overallSummary();
fclose(stdout);

我运行了代码,它按预期工作。 但是,控制台一直闪烁。它看起来像被阻止了。按下回车并没有停止它。它没有挂。我刚刚失去了对控制台的控制。为什么?

4

1 回答 1

0

我建议更改为更具表现力的:

#include <iostream>    

void overallSummary(std::ostream& os); // use os instead of std::cout in overallSummary

std::ofstream ofs;
ofs.open("summary.txt");
if(!ofs.is_open())
  abort();
overallSummary(ofs);
ofs.close();

否则,如果您只想写入文件,这意味着重定向 std::cout
所以这样称呼它:

./program_name > summary.txt

在 std::cout 上编写的程序进入 summary.txt。使用“>>”而不是“>”追加。

于 2012-11-22T23:13:10.500 回答