0

私はこのプログラムを持っていて、データをそれぞれ 2 kb のような小さな部分で読み取り、それをファイルに書き込みたいのですが、それを実行しようとすると、ファイルの読み取りと書き込みが 4 回行われます。ここに私のコードがあります:

#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 に答える