2012-07-12 8 views
6

私は、大きなファイル(〜1TB)を検索するifstreamを使用してC++でプログラムを実装しています。しかし、これは2GBを読み込んだ後に失敗します。大きなファイルの場合でもファイルの位置を取得する方法はありますか?私は32ビットWindowsマシン用にコンパイルします。あなたがfstreamを使用する場合大きなファイルをifstreamで検索する

std::ifstream f; 
f.open(filename.c_str(), std::ifstream::in | std::ifstream::binary); 
while(true) { 
    std::cout << (uint64_t)(f.tellg()) << std::endl; 
    //read data 
} 
+0

を使用していますが、ファイルを読み込むCの代替方法を試してみましたか? – stefan

+0

@stefanには、サイズが32ビットを超えるプレーンなCファイル位置ハンドラがありますか? – triclosan

+0

@triclosan私が言ったように:私は知らない、それは単なるアイデアだった – stefan

答えて

1

あなたは32ビットプラットフォーム上でコンパイルされているために、あなたは32ビットアクセスを得ようとしています。大きなファイルにアクセスするには、プラットフォームに依存ソリューションを使用する必要があります、窓用

  • をLinux用_lseeki64()
  • を使用し、これは実際には何を変更した場合、私は知らないlseek64()
+0

私はこれらの機能を使用します。ありがとうございました! – Patrik

関連する問題