toge's diary

コンピュータ関連の趣味をつらつらと。

iostream使って速くファイルサイズを読み込む

なんか、世の中にはrdb->in_avail()は正しいサイズを返さないって話もあるみたいだが、Linux上のgccでは3.4.6以降どれで別に問題なく使えてる。

この部分に関しては、C言語よりC++の方が使っていて楽ですな.

  // open file
  const char* filename = argv[1];

  std::ifstream input(filename);
  if (input.is_open() == false)
  {
    std::cerr << "[ERROR] can't open the file : " << filename << std::endl;
    return 1;
  }

  // read file
  std::string text;
  {
    int filesize = input.rdbuf()->in_avail();

    printf("filesize %d\n", filesize);
  }