0

stdout を変更する stdio.h に関する C++

いくつかのデータを印刷する関数があります。

//overallSummaryコンソールにデータを出力する void 型の関数です。期待どおりに動作します。

テキストファイルに保存したかったので、代わりにこれにしました

#include <stdio.h>

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

コードを実行したところ、期待どおりに機能しました。 しかし、コンソールは点滅し続けました。ブロックされていたようです。Enter キーを押しても停止しませんでした。ぶら下がっていませんでした。コンソールの制御を失いました。なんで?

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 に答える