ios :: ate не перемещается в конец файла - PullRequest
0 голосов
/ 07 октября 2018

У меня есть эта маленькая программа.

#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 голосов
/ 07 октября 2018

Я думаю, что режима добавления будет достаточно для того, что вы пытаетесь сделать: fstream f.open("file.txt", ios::app );

В качестве альтернативы вы также можете использовать seekp перед записью, хотя это не является предпочтительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...