000
28.09.2006, 11:43 Uhr
pulse
|
Hi,
ich bin noch ziemlicher C++ Anfänger und habe eine Frage bezüglich Vergleichsoperatoren.
Folgende Code ist mein erster Versuch, den Header einer AIFF Audiodatei zu parsen.
Dabei möchte ich die ersten 4 Bytes (ID) der Datei in einen Puffer laden, um per if / else zu entscheiden, wo ich die Datei weiter auslesen soll.
Das lesen der 4 Bytes funktioniert soweit, leider stimmt mit dem Vergleich was nicht, denn ich bekomme "False" zurück, obwohl die 4 Bytes zu 100% den Inhalt "FORM" haben (wird per cout zumindest ausgegeben).
C++: |
#include <iostream> #include <fstream> #include <AudioToolBox/AudioToolBox.h> using namespace std;
ifstream::pos_type size; char * ckid;
int main () {
ifstream file ("test.aif", ios::in|ios::binary|ios::ate); int sz_char = sizeof (ID); if (file.is_open()) { size = sz_char; ckid = new char [size]; file.seekg (0, ios::beg); file.read (ckid, size); cout << ckid << endl;
if (ckid == "FORM") { cout << "Type is FORM\n"; } file.close(); delete[] ckid; } else cout << "Unable to open file"; cout << endl; return 0; }
|
Wäre sehr dankbar, wenn mir jemand nen Hinweis geben kann wo ich nen Denkfehler drin hab
pulse |