ヘッダーとデータを含むバイナリ ファイルを (一度に) 読み取る必要があります。C++ でファイルを読み取るにはさまざまな方法がありますが、どの方法が最も高速で信頼性が高いかを知りたいです。reintrerpret_cast
また、生データを構造体に変換する最良の方法 かどうかもわかりません。
編集: ヘッダー構造には機能がなく、データのみがあります。
ifstream File(Filename, ios::binary); // Opens file
if (!File) // Stops if an error occured
{
/* ... */
}
File.seekg(0, ios::end);
size_t Size = File.tellg(); // Get size
File.seekg(0, ios::beg);
これは istreambuf_iterator なしの ifstream です
char* Data = new char[Size];
File.read(Data, Size);
File.close();
HeaderType *header = reinterpret_cast<HeaderType*>(Data);
/* ... */
delete[] Data;
これは ifstream WITH istreambuf_iterator です
std::string Data; // Is it better to use another container type?
Data.reserve(Size);
std::copy((std::istreambuf_iterator<char>(File)), std::istreambuf_iterator<char>(),
std::back_inserter(Data));
File.close();
const HeaderType *header = reinterpret_cast<HeaderType*>(Data.data());
これもネットで発見
std::ostringstream Data;
Data << File.rdbuf();
File.close();
std::string String = Data.str();
const HeaderType *header = reinterpret_cast<HeaderType*>(String.data());