Eine Frage des Headers
-
Moin Leute,
ich habe da mal eine generelle Frage zu den Headern von C++.
Und zwar gibt doch zwei Sorten von Header-Dateien, einmal die mit der Endung .h und einmal ohne
(iostream.h / iostream)
Wenn ich jetzt die Headerdatei mit der Endung .h includiere meckert der Compiler rum in Form einer Warnung, da diese ja angeblich veraltet sein soll.
Wo sollen da die Unterschiede sein?Vor allem kommt es mir so vor, als ob die "neuen" Header Dateien nicht 100 % kompatibel zu den alten sind.
ZB. fstream vs. fstream.h
Eine Objektdatei der Klasse ifstream bietet die Methode read.
Soweit so gut, aber die Methode read aus der fstream (ohne .h) akzeptiert nur char* während die read Methode aus fstream.h auch unsigned char* erwarten kann.
Mache ich hier etwas falsch, oder wurde diese Methode "beschnitten"?
Vor allem hatte ich mit der neuen read Methode nur fehlerhafte Ergebnisse während die alte read Methode tadellos funktioniert, ohne Änderung des Quelltextes (bis auf den Wechsel der Header und der Anpassung von "using namespace std;").Wie sind eure Meinungen/Erfahrungen? Habt ihr auch nur Probleme damit oder läuft alles wunderbar?
MfG
Vic
-
Nutze einfach die neuen Header, wenn du nicht einen ganz triftigen Grund hast, die alten zu verwenden.
Zeig mal Code, mit dem du Probleme mit dem neuen Header hast.
Zu iostream vs. iostream.h siehe http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ
-
Die iostream macht mir weniger Sorgen, Probleme macht bislang die fstream.
Das geht zB mit der fstream nicht:
ifstream *dat; ... unsigned char dummy[4]; float wert; dat->read(dummy, 4); memcpy (&wert, dummy, 4);
Würde ich hierfür fstream benutzen würde ich immer die Fehlermeldungen bekommen, dass read keinen unsigned char akzeptiert.
Dann würde der noch rummekkern, dass dummy kein Pointer ist und wenn man ein & davorsetzt, kopiert memcpy nur das erste Byte und die Restlichen werden übersprungen.
Ausserdem könnte man dieses Verfahren nicht für float Werte verwenden, das ist zumindest meine Erfahrung, ich lass mich gern eines Besseren belehren.
Mit int Werten funktionierten beide Header.MfG
Vic