Имеется некоторый файл, в конце файла записана служебная инфа длиной в 8 байт. Необходимо открыть этот файл для дальнейшего дописывания через std::ofstream, не затирая всего содержимого, сместить от конца на 8 байт назад, переписать эту инфу на другую, после чего дописывать файл. Проблема состоит в том, что используя поток это сделать почему-то никак не выходит. У меня код выглядит так:
| Код | std::ofstream RecStream( m_FileName.c_str(), std::ios_base::ate | std::ios_base::binary | std::ios_base::out ); RecStream.seekp( 0 - 2*sizeof(__int32), std::ios_base::end );
|
но после этого tellp() почему-то возвращает -1, и ничего не пишет. если std::ios_base::ate заменить на std::ios_base::app, то тогда файл дописывается, но старая инфа в 8 байт не переписывается. если std::ios_base::ate вообще убрать, то по-прежнему в файл ничего не пишется. Что посоветуете сделать? п. с. использую VS2005. |