У меня есть эта программа, и я хочу прочитать данные небольшими частями, например, по 2 КБ, а затем записать их в файл, но когда я пытаюсь сделать это, я читаю и записываю мой файл четыре раза. вот мой код:
#include<fstream>
#include<iostream>
using namespace std;
ifstream::pos_type size; // use if file is larger than 2 gb
int main()
{
char *memblock=0;
ifstream in("file.txt", ios::in | ios::binary | ios::ate);
ofstream in1("file1.txt", ios::out | ios::binary | ios::ate);
size = in.tellg();
cout << "Size of file "<< size << endl;
float sz= size/2048.0;
int sizechck = ceil(sz);
cout<< "size is "<<sizechck;
if(in.is_open())
{
memblock = new char [2048];
for (j=0;j<=sizechck;j++)
{
in.seekg (j*2048,ios::beg);
in.read (memblock, 2048);
in1.write(memblock,2048);
}
}
system("pause");
return 0;
}
Вы читаете и пишете 4096 байт, но вы ищете 2048 (кстати, вы пишете в нераспределенную память).
Вам не нужно искать вообще. Чтение и запись перемещают указатель файла соответственно.
Других решений пока нет …