Задать вопрос
@014

Почему метод tellp() возвращает не то значение которое ожидается?

Открываю файл который занимает 141 байт на диске (то есть не нулевой). Открываю на запись в конец, чтение, в бинарном режиме. Пишу в него строку "test", все правильно, она пишется в конец файла, так как ios::app. Логично предположить что и файловый указатель записи должен остаться в конце файла и вернуть абсолютное значение, то есть вернуть по сути размер файла.
То есть tellp() должен вернуть 141 + 5 (test + '\0') = 146, но шо то я не так видимо понял и tellp() возвращает 5, как будто это не абсолютное значение а локальное, то есть сколько записал столько и возвратил. Подскажите что я упустил или не так понял?

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

int main()
{
    fstream distFile;
    distFile.open("test.dat", ios::binary | ios::app | ios::out | ios::in);
    distFile.write("test", 5);

    cout<<"tellp = "<<distFile.tellp()<<endl;

    return 0;
}
  • Вопрос задан
  • 377 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
AxianLTD
@AxianLTD
Ввод вывод буферизирован flush IMHO делать нужно
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vilgeforce
Раздолбай и программист
"Пишу в него строку "test", все правильно, она пишется в конец файла" - вы это проверяли?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы