std::vector.data(): использование в ifstream
Как использовать vector.data() в ifstream?
std::ifstream file(fileAdrress, std::ios::in | std::ios::binary);
std::vector<unsigned char> block;
Так?
file.read(reinterpret_cast<char*>(block.data()), allocateSize);
Или как?
Ответы (1 шт):
Автор решения: Chorkov
→ Ссылка
Все правильно, но есть тонкости:
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()), allocateSize );
if(!file) // EOF! прочитали только часть блока.
block.resize( file.gcount() );
Если смущает cast, то, смените хранимый в vector тип:
std::vector<char> block;
...
file.read( block.data(), block.size() );
...