Potrzebuję przeczytać duży plik binarny (~ 1GB) w std::vector<double>
. Obecnie używam infile.read
, aby skopiować całą rzecz do bufora char *
(pokazanego poniżej) i obecnie planuję przekonwertować całość na doubles
z reinterpret_cast
. z pewnością musi być sposób, aby po prostu umieścić doubles
prosto w vector
?jak sprawnie odczytać plik binarny do wektora C++
Nie jestem też pewien, co do formatu pliku binarnego, dane zostały wyprodukowane w python więc to chyba wszystko pływa
ifstream infile(filename, std--ifstream--binary);
infile.seekg(0, infile.end); //N is the total number of doubles
N = infile.tellg();
infile.seekg(0, infile.beg);
char * buffer = new char[N];
infile.read(buffer, N);
Czy istnieje powód, dla którego chcesz użyć podwójnych? Dane binarne są zwykle reprezentowane jako znak, ponieważ na większości platform zajmuje on jeden bajt. – Freddy
Jeśli nie znasz formatu pliku, w jaki sposób planujesz go przekonwertować? –
Ummmmm .... chcesz odczytać plik binarny nie znający formatu jako czegoś innego niż tylko strumień bajtów? – luk32