Re[2]: IOstream Library
От: Аноним  
Дата: 14.02.08 10:39
Оценка:
Здравствуйте, 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);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.