Как установить маркер конца файла в std::fstream?
Может константа есть какая-нибудь, которую просто записать нужно?
Кроме WinAPI SetEndOfFile() не знаю как это сделать
Здравствуйте, Аноним, Вы писали:
А>Как установить маркер конца файла в std::fstream?
А>Может константа есть какая-нибудь, которую просто записать нужно?
А>Кроме WinAPI SetEndOfFile() не знаю как это сделать
Если файл расширяется, то конец файла сдвигается автоматически.
А вот если уменьшается, как быть?
Как вариант, использовать WinAPI функции для работы с файлами.
Или делать копию и перезаписывать файл.
Но может быть есть более человеческий способ?
Подскажите, пожалуйста.
Здравствуйте, Аноним, Вы писали:
А>>Как установить маркер конца файла в std::fstream?
А>>Может константа есть какая-нибудь, которую просто записать нужно?
А>>Кроме WinAPI SetEndOfFile() не знаю как это сделать
А>Если файл расширяется, то конец файла сдвигается автоматически.
А>А вот если уменьшается, как быть?
А>Как вариант, использовать WinAPI функции для работы с файлами.
А>Или делать копию и перезаписывать файл.
А>Но может быть есть более человеческий способ?
А>Подскажите, пожалуйста.
Пользуясь потоками — никак. Поток — это абстракция доступа к данным. Это не обязательно работа с файлами. Соответственно, действия, специфичные для файлов, к потокам неприменимы.
А если есть желание использовать не WinAPI, а что-то "переносимей", то _chsize (<io.h>).
Здравствуйте, _VanGOG_, Вы писали:
_VG>Здравствуйте, Аноним, Вы писали:
А>>>Как установить маркер конца файла в std::fstream?
А>>>Может константа есть какая-нибудь, которую просто записать нужно?
А>>>Кроме WinAPI SetEndOfFile() не знаю как это сделать
А>>Если файл расширяется, то конец файла сдвигается автоматически.
А>>А вот если уменьшается, как быть?
А>>Как вариант, использовать WinAPI функции для работы с файлами.
А>>Или делать копию и перезаписывать файл.
А>>Но может быть есть более человеческий способ?
А>>Подскажите, пожалуйста.
_VG>Пользуясь потоками — никак. Поток — это абстракция доступа к данным. Это не обязательно работа с файлами. Соответственно, действия, специфичные для файлов, к потокам неприменимы.
Вроде как std::fstream и есть файловая специфика потоков.
fopen() и т.п. тоже предназначены для работы с файловыми потоками.
_VG>А если есть желание использовать не WinAPI, а что-то "переносимей", то _chsize (<io.h>).
В том-то и дело, что нету желания использовать WinAPI. А есть желание использовать std::fstream.
Но за функцию большое спасибо. Попробую прикрутить.