Я работаю над загрузчиком растровых изображений в 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?