重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

独学数日目でまだまだ未熟なものですがファイルの出力について、
以下のようなプログラムを作成した場合に…
(ソースの断片・部分)
//===
int firstfile()
{
ofstream fout("sample.txt");
if(!fout){
cout << "展開できませんでした\n";
return 1;
}
else
fout <<"最初の書き出し\n";
fout.close();
return 0;
}
//===
int endfile()
{
ofstream fout("sample.txt");
if(!fout){
cout << "ファイルの展開に失敗しました。\n";
return 1;
}
else
fout <<"最後の書き出し";
fout.close()
return 0;
}
//===
firstfile();
endfile;

firstfile関数で作成したファイルを、
endfile関数でファイルが上書きされてしまい、
「最後の書き出し」
としか出力されません。


最初の書き出し
最後の書き出し

と文字列を追加して保存できるようにするにはどうやって組めばいいのでしょうか?

持っている本を読みましたがどこにもそれらしい処理方法は書いてありませんでした。

A 回答 (2件)

> 上のソース(2番目の関数)を書き換えて上書きできるようにしていただけませんか?



上書きじゃなくて追加にするなら
ofstream fout("sample.txt", ios::app);

最初の方が教えてくださったページにも、
std::ofstream ofs( "test.txt", std::ios::out | std::ios::app );
と書いてありますね。
質問者さんの環境だと、デフォルトで「std::」が省略できるようですので、「std::」を無視して下さい。
ちなみに、std::が何を表しているかを学ぶには、C++の「ネームスペース」について調べてみて下さい。
    • good
    • 0
この回答へのお礼

ありがとうございました。ネームスペースの意味についても初めて知ることができました。

お礼日時:2007/07/16 12:54

ファイルストリームを開くときに「追加」で開けくように明示すればいいんじゃないでしょうか?


参考まで…。
http://www.geocities.jp/ky_webid/cpp/library/033 …
    • good
    • 0
この回答へのお礼

ありがとうございます。「app」が追加保存の鍵になるのでしょうかね。
ただ、「using namespace std;」と最初に記述した際の書き方がいまいちわからずコンパイルエラーが起こってしまいます。
どなたか、上のソース(2番目の関数)を書き換えて上書きできるようにしていただけませんか?

お礼日時:2007/06/16 23:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!