私は C++ でビットマップ ローダーに取り組んでおり、C スタイルの配列から std::vector に移動するときに、Google が答えを持っていないように見える通常の問題に遭遇しました。
8 ビットと 4 ビットのビットマップには、カラー パレットが含まれています。カラー パレットには、青、緑、赤、および予約済みの各コンポーネントがあり、サイズはそれぞれ 1 バイトです。
// Colour palette
struct BGRQuad
{
UInt8 blue;
UInt8 green;
UInt8 red;
UInt8 reserved;
};
私が抱えている問題は、BGRQuad 構造のベクトルを作成するときに、ifstream 読み取り関数を使用してファイルから直接 BGRQuad ベクトルにデータをロードできないことです。
// This code throws an assert failure!
std::vector<BGRQuad> quads;
if (coloursUsed) // colour table available
{ // read in the colours
quads.reserve(coloursUsed);
inFile.read( reinterpret_cast<char*>(&quads[0]), coloursUsed * sizeof(BGRQuad) );
}
C配列を作成してデータをBGRQuadベクターにコピーすることなく、ベクターに直接読み込む方法を知っている人はいますか?