0

ファイルの最初の行に常に書き込む方法を知りたいです。テキストファイルを介して別のソフトに共有する番号があり、それらの番号を定期的に最初の行に書きたいと思っています。

ありがとう。

えお

4

4 に答える 4

3

ファイルを完全に書き換えたい場合は、その内容を破棄してから、単純にtruncモードを使用します。ただし、保存したいコンテンツが他にある場合、最も簡単な方法は、ファイルをメモリに読み込み、最初の行を変更して、すべてを書き戻すことです。同じ量の文字を上書きしない限り、最初の行を直接変更することはできないと思います。

于 2012-05-10T08:50:49.500 に答える
0

この2つの関数を見てください。

ostream&seekp(streampos pos); ostream&seekp(streamoff off、ios_bas:seekdir dir);

于 2012-05-10T08:35:04.693 に答える
0

ファイルが大きくない場合は、カスタムの最初の行を除く各行にコピーする新しい新しいファイルを作成できます。その後、オリジナルを交換します。

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
}
于 2012-05-10T09:25:33.020 に答える
0

多分これはあなたの問題を解決します

 ofstream out("foo.txt");
 out << "foo";
 out << "\r" << "bar";

これにより、バーのみが含まれるファイルが残ります。

2番目の方法:ファイルに1行しか含まれていない場合は、ofstream::trunc書き込みごとに開いて閉じることができます

于 2012-05-10T08:50:01.417 に答える