[c++] odczyt plików ios::binary + ios_base::in
Ostatnio zmodyfikowano 2013-10-05 07:09
damek24 Temat założony przez niniejszego użytkownika |
[c++] odczyt plików ios::binary + ios_base::in » 2013-10-04 11:36:12 problem polega na tym że przy binarnym odczycie plików 3ds w wyniku działania programu mam dziwny offset. program czyta kolejne bajty co sprawdziłem z hexedytorem aż w pewnym momencie offset jest -1 chociaż hexedytor pokazuje że jeszcze można czytać. jak sprawdziłem dla jakiejś bitmapy to offset zmieniał się prawidłowo od 0 co 2 i moje pytanie dlaczego tak się dzieje
int main() { string nazwa; fstream plik; ofstream wyjscie; wyjscie.open( "o.txt" ); cout << "podaj nazwe pliku "; cin >> nazwa; plik.open( nazwa, ios::binary || ios_base::in ); wyjscie << "offset " << plik.tellg() << endl; short a[ 330 ] = { 0 }; wyjscie.flags( ios::hex ); for( int i = 0; i < 330; i++ ) { plik.read(( char * ) & a[ i ], 2 ); wyjscie << "wartosc " << a[ i ] << endl; wyjscie << "offset " << plik.tellg() << endl; if( i % 8 == 0 ) wyjscie << endl; if( !plik.good() ) { wyjscie << "koniec"; wyjscie.flags( ios::dec ); plik.read(( char * ) & a[ i ], 2 ); wyjscie << i << endl; break; } } system( "pause" ); }
poniżej wynik działania programu dla pliku o rozmiarze 1065 bajtów
offset 0
wartosc 4d4d
offset 308
wartosc 429
offset 30a
wartosc 0
offset 30c
wartosc 2
offset 30e
wartosc a
offset 311
wartosc 0
offset 313
wartosc 3
offset 315
wartosc 0
offset 317
wartosc 3d3d
offset 319
wartosc 339
offset 31b
...
wartosc e910
offset 429
wartosc 0
offset ffffffffffffffff
koniec143 |
|
pekfos |
» 2013-10-04 14:45:24 ios::binary || ios_base::in
Dlaczego tak? |
|
damek24 Temat założony przez niniejszego użytkownika |
» 2013-10-04 20:27:49 dawno nie czytałem plików binarnych i użycie ifstream plik; plik.open( nazwa, ios::binary );
zamiast fstream pomogło pytanie tylko jaka jest różnica między bo myślałem że to robi to samo.... ifstream plik; plik.open( nazwa, ios::binary );
a fstream plik; plik.open( nazwa, ios::binary || ios::in );
|
|
killjoy |
» 2013-10-04 20:47:16 Mylisz operator bitowy | z operatorem logicznym || . |
|
domin568 |
» 2013-10-04 21:48:56 W jakim celu piszesz otwieranie plików 3ds , przecież to sa pliki z modelami 3d ?? |
|
damek24 Temat założony przez niniejszego użytkownika |
» 2013-10-05 07:09:45 bo potrzebuję napisać parser tych plików |
|
« 1 » |