を上書きし、私はまだそれがどのように動作するかを理解することはできません。のは、この最小限の例を見てみましょう:これは動作しませんファイル全体を読んで、そして同じのstd :: fstreamの中のすべての
#include <fstream>
#include <string>
int main()
{
std::fstream fs{ "somefile.txt", std::fstream::out | std::fstream::in };
std::string line;
while (std::getline(fs, line))
{
// reads the whole file
}
// the purpose is to overwrite the whole file
fs.seekp(0, std::ios_base::beg); // moves at the beginning
fs << "Hello world!" << std::endl; // writes in the file
// possibly other read/write
}
、1つが最初に読み、その後、私が読んすべてに応じて同じストリームに書き込むことはできませんようです。 ファイルを閉じる際の回避策を知り、std::ios_base::trunc
フラグで開きます。しかし、それは無意味であるように思われます:なぜそのような制限がありますか?読んだ後に技術的にファイルを上書きすることはできませんか?
多分あなたは、これは問題ではありませんが、あなたはそれがないという余分なものを必要としない限り、 'のstd :: endl'を使用していない' eof'ビット –
をクリアする必要があります。 '' \ n ''は行を終わらせます。 –
@ForceBru何も書き込まないので、ファイルの変更時刻は変更されません。 – Boiethios