Làm cách nào để thực hiện điều này bằng thuật toán STL?copy_n hoặc cho đến 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);
Lưu ý buf.size() < 2048
.
ví dụ: điều gì sẽ xảy ra nếu tôi làm như sau và tệp nhỏ hơn 2048 byte?
std::copy_n(std::istreambuf_iterator<char>(file), 2048, std::back_inserter(buf));
Điều gì xảy ra nếu tệp lớn hơn? Là phần còn lại của nó bị loại bỏ hoặc bạn cần một iterator để bắt đầu của phần còn lại để được đọc? – pmr
Ifstream bị hủy bỏ khi số byte yêu cầu đã được đọc. – ronag
Điều này mở ra khả năng có một trình lặp riêng biệt thay vì một thuật toán. – pmr