要將我從輸入文件讀取的內容複製到向量中,我使用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); –