0

私はC++を学ぼうとしています。私は以下のような文字配列に文字ファイルを読み込んでいます:

#include <iostream>
#include <fstream>
#include<conio.h>
#include <stdint.h>

using namespace std;

int main () {
  char c, str[256];
  ifstream is;

  cout << "Enter the name of an existing text file: ";
  cin.get (str,256);

is.open (str); 

int32_t fileSize = 0;
if(is.is_open())
{
    is.seekg(0, ios::end ); 
    fileSize = is.tellg();
}
cout << "file size is " << fileSize << "\n";

is.close() ;

is.open (str); 

char chararray [fileSize] ;

  for(int i = 0 ; i < fileSize ; i++)
  {
    c = is.get();  
    chararray [i] = c ;
  }

for(int i = 0 ; i < fileSize ; i++)
  {
    cout << chararray [i];  
  }

  is.close();           
   getch();
  return 0;
}

しかし、このコードは大きなcharファイルを読み取るのに時間がかかります。では、charファイルをchar配列にすばやく読み込む方法は?Javaでは、通常、メモリマップドバッファを使用します。C++でもそうですか。申し訳ありませんが、C++は初めてです。

4

2 に答える 2

4

charファイルをchar配列に読み込む方法:

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
int main () 
{

       char buffer[256];
       long size;

       ifstream infile ("test.txt",ifstream::binary);

       // get size of file
       infile.seekg(0,ifstream::end);
       size=infile.tellg();
       infile.seekg(0);

       //reset buffer to ' '
       memset(buffer,32,sizeof(buffer ));

       // read file content into buffer
       infile.read (buffer,size);

       // display buffer
        cout<<buffer<<"\n\n";

       infile.close();     


  return 0;
}
于 2012-11-09T15:59:08.523 に答える
1

is.read(chararray、fileSize)を使用できます。

于 2012-11-09T11:09:09.280 に答える