float ifstream
-
Eigentlich müsste es funktionieren - leider tut es das nicht. Irgendwo muss ich einen Denkfehler haben...
ifstream inStream("FZSTAMM.D0A", std::ios::binary); float f(0.0f); if(inStream.is_open()) { inStream.seekg(t+tab[j][0]); inStream >> f; inStream.close(); };
-
Das geht:
ifstream inStream("FZSTAMM.D0A", std::ios_base::binary); float f(0.0f); if(inStream.is_open()) { inStream.seekg(t+tab[j][0]); inStream.read((char*)&f, sizeof(float)); inStream.close(); }
-
Verfi**te ****="($/U§%§
Immernoch das selbe Problem: http://www.c-plusplus.net/forum/viewtopic.php?t=45703
-
Das Problem muss es doch schon oft gegeben haben... irgendeiner muss doch ne Antwort darauf wissen!
-
Was ist t und tab? Sind die Variablen in Ordnung?
-
t und tab sind in Ordnung - er liest die anderen floats ja auch korrekt ein. Bloss die, die 0x1A enthalten werden falsch eingelesen...
-
Folgender Code funktioniert:
int _tmain(int argc, _TCHAR* argv[]) { fstream FStream; float f(39650.0f); FStream.open("out.txt", ios::out|ios::binary); if(FStream.is_open()) { FStream.write((const char*)&f, sizeof(float)); FStream.close(); }; FStream.open("out.txt", ios::in|ios::binary); if(FStream.is_open()) { FStream.read((char*)&f, sizeof(float)); FStream.close(); }; std::cout << f << std::endl; getch(); return 0; }
In der Datei steht: 0x00 0xE2 0x1A 0x47
Der Code gibt auch folgendes aus: 39650
In der Datei die ich auslesen will steht ebenfalls 0x00 0xE2 0x1A 0x47 - wieso geht das da dann nicht? Da landet dann immer: 8.107352e-041edit: http://sources.redhat.com/ml/cygwin/1999-11/msg00531.html
-
Lösung: Never mix C&C++