ios :: ate不会移到文件末尾

时间:2018-10-07 16:04:31

标签: c++ stream

我有这个小程序。

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    fstream f("file.txt", ios::out);
    f << "Hello world!" << endl;
    f.close();

    fstream atEnd("file.txt", ios::out | ios::ate);
    cout << "Position: " << atEnd.tellp() << endl;
    atEnd << "You too" << endl;
    atEnd.close();

    return 0;
}

它应该打开文件,向其中写入一些内容,然后将其关闭,然后在末尾再次重新打开,因此应在文件末尾附加“您也”字样。但是位置始终为0,并且内容被重写:https://www.onlinegdb.com/online_c++_compiler。为什么会这样?根据文档,ios::ate应该在打开后立即搜索到流的结尾

1 个答案:

答案 0 :(得分:0)

我认为追加模式足以满足您的要求: fstream f.open("file.txt", ios::app );

或者,您也可以在编写之前使用seekp,尽管不是首选。