Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] odczyt plików ios::binary + ios_base::in

Ostatnio zmodyfikowano 2013-10-05 07:09
Autor Wiadomość
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
C/C++
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
P-93080
pekfos
» 2013-10-04 14:45:24
C/C++
ios::binary || ios_base::in
Dlaczego tak?
P-93087
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
C/C++
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....
C/C++
ifstream plik;
plik.open( nazwa, ios::binary );
a
C/C++
fstream plik;
plik.open( nazwa, ios::binary || ios::in );
P-93105
killjoy
» 2013-10-04 20:47:16
Mylisz operator bitowy
|
 z operatorem logicznym
||
.
P-93112
domin568
» 2013-10-04 21:48:56
W jakim celu piszesz otwieranie plików 3ds , przecież to sa pliki z modelami 3d ??
P-93130
damek24
Temat założony przez niniejszego użytkownika
» 2013-10-05 07:09:45
bo potrzebuję napisać parser tych plików
P-93143
« 1 »
  Strona 1 z 1