Как считать ifstream сразу в std::vector

Сейчас считываю поблочно файл в цикле for:

in->read((char*)(&tmpByte), sizeof(tmpByte));
vect.push_back(tmpByte);

Однако перед этим я сделал: vect.reserve(n);

Как видим - система скрупулезно считывает блок побайтам, после чего их пихаем в вектор.

А нельзя ли сразу считывать целиком блок?

И нельзя ли сразу считывать его в вектор?

P.S. Вдохновился статьей - ClickMe


Ответы (1 шт):

Автор решения: Alrott SlimRG
std::ifstream file(fileAdrress, std::ios::in | std::ios::binary);
std::vector<unsigned char> block;


block.resize(allocateSize); // Важно! data() не аллоцирует память.
file.read(reinterpret_cast<char*>(block.data()), block.size());
if (!file) // EOF! прочитали только часть блока.
    block.resize( file.gcount() );

Спасибо, @Vladimir и @Chorkov

→ Ссылка