Per copiare ciò che ho letto dal file di input al vettore, ho utilizzato std::copy()
come consigliato in Reading an std::ifstream to a vector of lines.Alcuni byte mancano dopo aver letto uno std :: ifstream a un vettore di linee
Il problema si verifica se uso:
std::copy(std::istream_iterator<unsigned char>(inputfile),
std::istream_iterator<unsigned char>(),
std::back_inserter(myVector));
Il 16 byte del mio file è mancante nella variabile myVector
.
Ma se io uso il seguente codice:
inputfile.read((char*)&myVector[0], sizeof(int)*getfilesize(nameOfFile));
Poi il byte non manca più.
Sto cercando di analizzare i file WAV e ho perso troppo tempo su questo, spero di imparare qualcosa di nuovo da questo. Puoi dirmi cosa c'è di sbagliato nella prima versione del codice qui sopra?
La prima versione utilizza una funzione di ingresso formattato, così saltando esempio ciò che interpreta come spazi bianchi. – dyp
Il file è aperto in modalità binaria in entrambi i casi? –
Sì, non ho cambiato nulla tranne sopra. Ho usato ifstream come; std :: iffile file di input (nameOfFile.c_str(), std :: ifstream :: in | std :: ifstream :: binary); –