0

我有这个程序,我想以每个 2 kb 的小部分读取数据,然后将其写入文件,但是当我尝试这样做时,它会读取和写入我的文件四次。这是我的代码:

#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;
}
4

1 回答 1

3

您正在读取和写入 4096 个字节,但您正在寻找 2048 个字节。(顺便说一句,您正在写入未分配的内存)。

你根本不需要寻找。读写相应地移动文件指针。

于 2013-03-21T20:20:30.383 回答