Jak to zrobić, używając algorytmów STL?copy_n lub do 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);
Uwaga buf.size() < 2048
.
np. co się stanie, jeśli zrobię co następuje, a plik będzie mniejszy niż 2048 bajtów?
std::copy_n(std::istreambuf_iterator<char>(file), 2048, std::back_inserter(buf));
Co stanie się, jeśli plik będzie większy? Czy reszta jest odrzucona, czy potrzebujesz iteratora na początku części, która wciąż jest do przeczytania? – pmr
Ifstream jest usuwany po przeczytaniu wymaganej liczby bajtów. – ronag
To otwiera możliwość posiadania oddzielnego iteratora zamiast algorytmu. – pmr