¿Cómo haré esto usando algoritmos STL?copy_n o hasta eof?
std::ifstream file(filename);
std::vector<unsigned char> buf;
for(auto file_it = std::istreambuf_iterator<char>(file); file_it != std::istreambuf_iterator<char>() && buf.size() < 2048; ++file_it)
buf.push_back(*file_it);
Nota buf.size() < 2048
.
p. Ej. ¿Qué pasará si hago lo siguiente, y el archivo es más pequeño que 2048 bytes?
std::copy_n(std::istreambuf_iterator<char>(file), 2048, std::back_inserter(buf));
¿Qué ocurre si el archivo es más grande? ¿El resto está descartado o necesitas un iterador al comienzo de la parte que aún queda por leer? – pmr
Ifstream se descarta una vez que se ha leído el número requerido de bytes. – ronag
Esto abre la posibilidad de tener un iterador separado en lugar de un algoritmo. – pmr