KingRAY Geschrieben 28. August 2002 Geschrieben 28. August 2002 Guten Morgen, folgendes Problem: ich möchte Daten auf „Low-Level“ Ebene aus einer Datei lesen. Bisher habe ich das immer mit „io.h“ gemacht: #include <io.h> . . . if((hand=open(name,O_RDONLY)) = = -1) . . . int hand short abstand . . . read(hand, &abstand, sizeof(short)); . . . Und das hat auch funktioniert. Die Frage ist nur ob das noch Zeitgemäß ist, oder ob es mittlerweile in C++ einen eleganteren Weg gibt, wenn ich zusätzlich (um andere Informationen aus der Datei zu lesen) auch noch auf die formatierte Eingabe zurückgreifen möchte? Zitieren
Crush Geschrieben 28. August 2002 Geschrieben 28. August 2002 Bequem und sinnvoll ist es mit CArchive und CObject. Man muß eigene Klassen von CObject ableiten und notfalls (bei Zeigervariablen, etc.) Serialize() überschreiben. Über die << und >> Operatoren kann man dann je nach IsLoading() oder IsStoring() die Ein- oder Ausgabe in die Objekte und Variablen einleiten. CArchive-Objekte wiederum verwenden wiederum CFiles welche entweder übers normale Dateisystem gehen oder auch ohne größere Schwierigkeiten auf CSockets gelenkt werden können, damit man Daten sogar übers Internet bei Client/Server-Anwendungen austauschen kann. Zitieren
idefix Geschrieben 4. September 2002 Geschrieben 4. September 2002 Wie wärs mit #include <fstream.h> fstream InputFile; InputFile.open(pszFile,ios::in,filebuf::text); InputFil>>iVer; InputFile>>nCount; InputFile>>iRow; InputFile>>iCol; InputFile.close(); und ofstream OutputFile; OutputFile.open(pszFile,ios::out,filebuf::text); OutputFile<<1<<endl; OutputFile<<nCount <<endl; OutputFile<<nRows <<endl; OutputFile<<nColumns <<endl; OutputFile.close(); wenn du keine MFC benutzen willst Zitieren
KingRAY Geschrieben 16. September 2002 Autor Geschrieben 16. September 2002 Ist es möglich das fstream.h unter VC++ nicht funktioniert bzw. Konflikte verursacht? Fehler in folgender Zeile fstream inputfile Fehler: 'fstream' Mehrdeutiges Symbol 'cout' verursacht den selben Fehler es wäre auch interessant zu wissen was diesem Phänomen zu grunde liegt. Zitieren
Goos Geschrieben 16. September 2002 Geschrieben 16. September 2002 Also am VC++ liegts nicht wuerd ich sagen, da gings bisher wohl noch bei jedem. Zu deiner Fehlermeldung kann ich so pauschal jetzt auch nix sagen...faellt mir momentan nix zu ein. Vielleicht postest aber mal den Code....ich denk mal, dann koennte man mehr sehen. Goos Zitieren
idefix Geschrieben 17. September 2002 Geschrieben 17. September 2002 Sorry, ich habe die Microsoft Implemation benutzt. Warum #include <fstream> und #include <fstream.h> gibt ist mir nicht ganz klar. Auf jeden fall ist <fstream> von der STL und <fstream.h> Microsoft spezifisch und ohne namespace (verträgt sich nicht mit der STL) also den Include auf #include <fstream> ändern #include <iostream> (für cout ) und using namespace std; Hinzufügen und InputFile.open(pszFile,ios::in, filebuf::text); in InputFile.open(pszFile,ios::in); ändern sollte dann wieder laufen Zitieren
Orffi Geschrieben 17. September 2002 Geschrieben 17. September 2002 Warum #include <fstream> und #include <fstream.h> gibt ist mir nicht ganz klar. Mein Auftritt: <fstream.h> soll nicht mehr verwendet werden (ist übrigens kein Standard C++). Das es diese Variante gab, hat Gründe in der Kompatibilität zu C. Das es sie heute noch gibt, liegt an den Compiler-Herstellern. #inlcude <fstream> ist die einzig richtige Variante. Auf jeden fall ist <fstream> von der STL und <fstream.h> Microsoft spezifisch und ohne namespace (verträgt sich nicht mit der STL) also den Include auf #include <fstream> ändern Mit Microsoft kenne ich mich nicht aus, nur mit dem Standard. Normalerweise gibt es aber keinen Unterschied zwischen #include<fstream.h> und #include <fstream> was die eigentliche Implementierung betrifft. Bei #include <fstream.h> werden die Funktionen etc. aber in den gloabalen Namespace reingeworfen. HTH Jan Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.