Ifstream Von Char auf Int oder Float



  • Hallo

    Ich lerne grade mit Ifstreams umzugehen.
    Im Buffer wird der Inhalt gespeichert den ich mit Read auslese.
    Buffer ist wegen Read ein Char.

    Nun bei angegebenen Offset befindet sich aber ein Float oder Integer.
    Wenn ich also es mit cout ausgebe kommt nichts stehen.



  • Sorry, aber dein Beschreib ist für dem Mülleimer. 😉

    Bring doch bitte mal ein wenit eindeutigen Code, dann kann man dir helfen. 🙂



  • Mist

    Also

    166 Height 4 byte Float
    170 Type 4 byte Integer
    174 Amplitude 4 byte Float
    178 Phase 4 byte Float
    182 Surface Curve Level 4 byte Float
    186 Texture Ciclyng 4 byte Integer

    Im Offset 166-186 befinden sich einige Informationen

    Ich möchte die auslesen aber im Read muss als erster Parameter ein Char sein
    Die dort sind aber Floats / Ints

    File.seekg(174);
    	buffer=new char[4];
    	File.read(buffer,4);
    	cout<<buffer<<endl;
    	delete buffer;
    

    wenn ich das so machen würde käme beim cout pure leere raus.



  • Lies jedes Stückchen einzeln aus und dann caste es, wenn es sein muss von char* zu float/int.



  • Das versteh ich jetzt nicht

    Wie muss es denn aussehen?

    buffer=new char[4];
    	for (int i=0;i<4;i++){
    	  File.seekg(174+i);
    	  File.read(buffer,1);
    	}
    	cout<<"Amplitude : "<<buffer<<endl;
    	delete buffer;
    

    So kommt bei mir nur irgend ein blödsinn raus



  • Hallo,

    z.B.:

    File.seekg(174); 
       buffer=new char[4]; 
       File.read(buffer,4); 
       cout << *(reinterpret_cast<float*>(buffer)) << endl;
       delete buffer;
    

    MfG,

    Probe-Nutzer



  • Oder:

    File.seekg(174);
    char buffer[ 4 ];
    File.read(buffer,4);
    cout << *(reinterpret_cast<float*>(buffer)) << endl;
    

    oder:

    File.seekg(174);
    float x;
    File.Read( ( char* )&x, sizeof( float ) );
    cout << x << endl;
    

Anmelden zum Antworten