C ++ ofstream:总是写在第一行

时间:2012-05-10 08:31:14

标签: c++ io overwrite

我想知道如何总是写一个文件的第一行。 我有通过文本文件分享的数字到另一个软件,我想在第一行定期写这些数字。

感谢。

EO

4 个答案:

答案 0 :(得分:3)

如果要完全重写文件,丢弃其内容,则只需使用trunc模式。但是,如果您要保留任何其他内容,那么最简单的方法是将文件读入内存,更改第一行并将所有内容写回。我认为除非你覆盖相同数量的字符,否则不可能直接更改第一行。

答案 1 :(得分:0)

看看这两个功能:

的ostream&安培; seekp(streampos pos); ostream的和放; seekp(streamoff off,ios_bas:seekdir dir);

答案 2 :(得分:0)

也许这可以解决你的问题

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

这将留下一个只有栏的文件。

第二种方法: 如果文件只包含一行,您可以使用ofstream::trunc打开它,并在每次写入后关闭它

答案 3 :(得分: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
}