Есть у меня файл :
ifstream file;
Как обрезать файл на нужное количество байт?К примеру на 5.
Обрезаем файл "c:/tmp/a.c" на 5 байт:
#include <filesystem>
int main()
{
uintmax_t n = std::filesystem::file_size("c:/tmp/a.c");
std::filesystem::resize_file("c:/tmp/a.c", n - 5);
return 0;
}
работоспособность зависит, от того, какая версия у вас компилятора, на VS2015 например надо делать std::experimental::filesystem
UPD1:
И да, читать и писать байты рекомендуется в бинарном режиме, если уж речь идет об обрезании файла с точностью до байта.
Спасибо всем за ответы. Я сделал уже сам. Вот как я сделал:
if (_sopen_s(&handle,c, _O_RDWR, _SH_DENYNO, _S_IREAD | _S_IWRITE) == 0)
{
d = _filelength(handle);
cout << "Размер файла :" << d << endl;
if (d > 10)
{
e = _chsize(handle, d - 5);
}
else
{
cout << "Файл меньше 10-ти байт" << endl;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
https://wandboxorg/permlink/fNyh3Nj0LroooFFq