Для копирования того, что я прочитал из входного файла в вектор, я использовал std::copy()
, как рекомендовано в Reading an std::ifstream to a vector of lines.Некоторые байты отсутствуют после чтения std :: ifstream в вектор строк
Проблема возникает, если я использую:
std::copy(std::istream_iterator<unsigned char>(inputfile),
std::istream_iterator<unsigned char>(),
std::back_inserter(myVector));
16-байт моего файла отсутствует в переменной myVector
.
Но если я использую следующий код:
inputfile.read((char*)&myVector[0], sizeof(int)*getfilesize(nameOfFile));
Тогда байты не недостающие больше.
Я пытаюсь разобрать файлы WAV, и я потерял слишком много времени на этом, я надеюсь, что я узнаю что-то новое из этого. Не могли бы вы рассказать мне, что не так с первой версией кода выше?
В первой версии используется форматированная входная функция, таким образом пропуская, например, что он интерпретирует как пробелы. – dyp
Открыт ли файл в двоичном режиме в обоих случаях? –
Да, я ничего не менял, кроме выше. Я использовал ifstream как; std :: ifstream inputfile (nameOfFile.c_str(), std :: ifstream :: in | std :: ifstream :: binary); –