0

3 つの diffrenet .cpp ファイルがあります。random.cppでファイルを作成するとき

    ofstream outfile ("random.log");

次に、random.cpp ファイルの random.log ファイルに書き込みます。

    outfile << " something" ;

次に、StudentCS.cpp のような別の .cpp ファイルに移動し、次を使用してファイルを開きます。

    ofstream outfile;
    outfile.open("random.log",std::ios_base::app);

random.cpp の途中で StudentCS を呼び出しても、すべての random.cpp 出力の後にすべての StudentCS 出力が書き込まれます。私は random.cpp から wrtie しようとしていますが、StudentCS.cpp を呼び出して何かを書き込んでから、random.cpp に再び書き込みます

4

3 に答える 3

1

ファイルを一度開いてから、ストリーム オブジェクトを渡します。またはそれ以上: ロギングが必要なすべてのモジュールで logger オブジェクトを使用できるようにします。

于 2012-11-22T18:06:43.423 に答える
0

「random.log」という名前を使用しているようです。

これは、ログ ファイルを書き込んでいることを意味しますか? もしそうなら、このプロセスを容易にするために開発された多くのロギング クラスの 1 つを使用すること検討できます( 1、2、3、4、5参照) 。

別の考え...

プロジェクトのさまざまな部分でファイルを開いたり閉じたりしています。他の回答では、ファイル ポインターを渡すことが提案されています。しかし、どこからでもこのファイルに書き込む必要があり、適切な予防措置を講じる必要がある場合は、ここでグローバル変数を使用することを検討できます。

于 2012-11-22T19:07:03.043 に答える
0

ランダム.cpp

void studentCS(ofstream & outfile);
void random() {
   ofstream outfile ("random.log");
   outfile << " something" ;
   outfile.close();
   studentCS(outfile);
   outfile.open("random.log",std::ios_base::app);
   outfile << " something write after call to studenCS";
}

学生CS.cpp

void studentCS(ofstream & outfile) {
   ofstream outfile("random.log",std::ios_base::app);
   outfile << " something else ";
}

ただし、CPU に負荷がかかる開閉操作はできる限り避けるようにしてください。

于 2012-11-22T18:09:54.077 に答える