Как считать 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() );