ファイルの最初の行に常に書き込む方法を知りたいです。テキストファイルを介して別のソフトに共有する番号があり、それらの番号を定期的に最初の行に書きたいと思っています。
ありがとう。
えお
ファイルを完全に書き換えたい場合は、その内容を破棄してから、単純にtrunc
モードを使用します。ただし、保存したいコンテンツが他にある場合、最も簡単な方法は、ファイルをメモリに読み込み、最初の行を変更して、すべてを書き戻すことです。同じ量の文字を上書きしない限り、最初の行を直接変更することはできないと思います。
この2つの関数を見てください。
ostream&seekp(streampos pos); ostream&seekp(streamoff off、ios_bas:seekdir dir);
ファイルが大きくない場合は、カスタムの最初の行を除く各行にコピーする新しい新しいファイルを作成できます。その後、オリジナルを交換します。
void ReplaceFirstLine(string filename)
{
ifstream infile;
ofstream outfile;
infile.open(filename.c_str(), ios_base::in);
outfile.open("tempname.txt", ios_base::out);
bool first = true;
string s;
while (getline(infile, s, '\n'))
{
if (first)
outfile << "my new first line\n";
else
outfile << s << endl;
first = false;
}
infile.close();
outfile.close();
::CopyFileA("tempname.txt", filename.c_str(), FALSE); // or Linux equivalent
}
多分これはあなたの問題を解決します
ofstream out("foo.txt");
out << "foo";
out << "\r" << "bar";
これにより、バーのみが含まれるファイルが残ります。
2番目の方法:ファイルに1行しか含まれていない場合は、ofstream::trunc
書き込みごとに開いて閉じることができます