1. ホーム
  2. c++

[解決済み] ofstreamでファイルに追加する [重複]。

2022-03-04 05:18:23

質問

ファイルにテキストを追加する際に問題があります。私は ofstream を追加モードで実行しても、3行ではなく、最後の1行しか含まれません。

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    ofstream file("sample.txt");
    file << "Hello, world!" << endl;
    file.close();

    file.open("sample.txt", ios_base::ate);
    file << "Again hello, world!" << endl;
    file.close();

    file.open("sample.txt", ios_base::ate);
    file << "And once again - hello, world!" << endl;
    file.close();

    string str;
    ifstream ifile("sample.txt");
    while (getline(ifile, str))
        cout << str;
}

// output: And once again - hello, world!

では、正しい ofstream のコンストラクタを使用して、ファイルに追加することができますか?

どのように解決するのですか?

私は非常に便利な関数(PHPのfile_put_contentsに似たもの)を使っています。

// Usage example: filePutContents("./yourfile.txt", "content", true);
void filePutContents(const std::string& name, const std::string& content, bool append = false) {
    std::ofstream outfile;
    if (append)
        outfile.open(name, std::ios_base::app);
    else
        outfile.open(name);
    outfile << content;
}

何かを追加する必要があるときは、そうするだけです。

filePutContents("./yourfile.txt","content",true);

この関数を使用すると、オープニングとクロージングに気を配る必要がない。ただし、大きなループの中では使わないでください。