Здравствуйте, Аноним, Вы писали:
А>Можно ли обрезать файл при помощи IOstream библиотеки, если да то как?
Если под этим понимаются обычные средства C++, то считать файл, отрезать нужный кусок и записать заново, что то типа такого:
#include <iostream>
#include <sstream>
//читаем весь файл в строку
std::fstream file_in;
file_in.open("test.txt",std::ios_base::in | std::ios_base::binary);
std::ostringstream out;
out << file_in.rdbuf();
file_in.close();
//пишем в новый (или в тот же самый)
std::fstream file_out;
file_out.open("test2.txt",std::ios_base::out | std::ios_base::binary | std::ios_base::trunc);
file_out << out.str().substr(0,out.str().size()/2); // здесь нужный кусок отрезать
file_out.close();
Здравствуйте, pvirk, Вы писали:
А>>Можно ли обрезать файл при помощи IOstream библиотеки, если да то как?
P>Если под этим понимаются обычные средства C++, то считать файл, отрезать нужный кусок и записать заново, что то типа такого:
P>P>#include <iostream>
P>#include <sstream>
P>//читаем весь файл в строку
P>std::fstream file_in;
P>file_in.open("test.txt",std::ios_base::in | std::ios_base::binary);
P>std::ostringstream out;
P>out << file_in.rdbuf();
P>file_in.close();
P>//пишем в новый (или в тот же самый)
P>std::fstream file_out;
P>file_out.open("test2.txt",std::ios_base::out | std::ios_base::binary | std::ios_base::trunc);
P>file_out << out.str().substr(0,out.str().size()/2); // здесь нужный кусок отрезать
P>file_out.close();
P>
А что бы без перезаписи никак? Т.к. файл объемный по размеру.
Что то на подобе вот такого, только через апишные ф-ции:
hfile=CreateFile(path,GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
SetFilePointer(hfile,0-(int)sizeof(какаято структура),0,FILE_END);//устанавливает файловый указатель спозиционированный на начало последней записи
SetEndOfFile(hfile);
Здравствуйте, <Аноним>, Вы писали:
А>А что бы без перезаписи никак? Т.к. файл объемный по размеру.
А>Что то на подобе вот такого, только через апишные ф-ции:
Ни STL, ни CRT не умеют обкусывать файлы. Это нужно брать какую-нибудь (кроссплатформенную) библиотеку, обращающуюся к соответствующим POSIX- или WinAPI-функциям (ftruncate и SetEndOfFile).
boost/filesystem, насколько я понимаю, это тоже не умеет.
... << RSDN@Home 1.2.0 alpha rev. 655>>