Datei einlesen



  • Hallo.

    Habe mich in einer C++-Referenz schlau gemacht über Datei I/O und möchte nun eine Datei einlesen (ein aufgezeichneter MPEG-Stream), erstmal 32 Byte in Hex.

    Leider kommt bei dem Quelltext unten die Meldung left of '.seekg' must have class/struct/union type.

    Kann mir jemand weiterhelfen? Ist der Weg, den ich da gehe, überhaupt der richtige?

    #include <fstream.h>

    void main () {
    int array[32];
    ifstream* ein= new ifstream("datei");
    int i;
    for (i=0; i < 31; i++)
    {
    if (ein.seekg(i))
    {
    *ein >> hex >> array[i];
    cout << array[i] << endl;
    }
    }
    }



  • Entweder

    ifstream ein("datei");
    ein.seekg();
    

    oder

    ifstream* ein = new ifstream("datei);
    ein->seekg();
    

    [edit]

    char ch[32];
    ifstream ein("datei");
    ein.read(ch, 32);
    

    Das wäre einfacher und macht das gleiche.
    [/edit]



  • Thanks. Nun geht's, allerdings ist die Ausgabe nur eine einzelne 0...



  • Ich möchte aber keine Chars einlesen, sondern Hex-Werte. Komme nicht weiter.



  • mac241 schrieb:

    Ich möchte aber keine Chars einlesen, sondern Hex-Werte. Komme nicht weiter.

    Jedes char ist genau ein Byte groß.
    Dieses char hat auch einen int-Wert. Und wie man Ganzzahlen in Hex umwandelt wirst du ja wohl wissen.

    Und warum müssen es umbedingt Hex-Werte sein?
    Wenn du etwas in der Form:
    7F
    haben willst, dann wirst du das kaum in einem Integer speichern können.
    Alles andere ist reines Umrechnen.



  • das funzt:

    #include <fstream.h> 
    
    int
    main (int argc, char **argv)
    { 
      unsigned char array[32],i;
      ifstream      ein("datei");
    
      for(i=0; i<31; i++)
      {
        ein>>array[i];
        cout<<hex<<(int)array[i]<<' ';
      } 
    
      cout<<endl;
    }
    

    so viel zum thema in C++ sei alles viel einfacher...


Log in to reply