Để sao chép nội dung tôi đọc từ tệp đầu vào sang vectơ, tôi đã sử dụng std::copy()
như được đề xuất trong Reading an std::ifstream to a vector of lines.Một số byte bị thiếu sau khi đọc tiêu chuẩn :: ifstream đến một vectơ của dòng
Vấn đề xảy ra nếu tôi sử dụng:
std::copy(std::istream_iterator<unsigned char>(inputfile),
std::istream_iterator<unsigned char>(),
std::back_inserter(myVector));
Byte thứ 16 của tập tin của tôi là mất tích trong biến myVector
.
Nhưng nếu tôi sử dụng đoạn mã sau:
inputfile.read((char*)&myVector[0], sizeof(int)*getfilesize(nameOfFile));
Sau đó các byte không thiếu nữa.
Tôi đang cố gắng phân tích các tệp WAV và tôi mất quá nhiều thời gian cho việc này, tôi hy vọng tôi sẽ tìm hiểu điều gì đó mới mẻ này. Bạn có thể vui lòng cho tôi biết điều gì sai với phiên bản đầu tiên của mã ở trên không?
Phiên bản đầu tiên đang sử dụng chức năng nhập được định dạng, do đó bỏ qua, ví dụ: những gì nó diễn giải là khoảng trắng. – dyp
Tệp có được mở ở chế độ nhị phân trong cả hai trường hợp không? –
Có, tôi không thay đổi bất cứ điều gì ngoại trừ ở trên. Tôi đã sử dụng ifstream như; std :: ifstream inputfile (nameOfFile.c_str(), std :: ifstream :: trong | std :: ifstream :: binary); –