Was ist "struct _iobuf *"?
-
Hallo Forum,
ich möchte ein Programm umschreiben. zB diese Funktion:
DebugObjDump(stdout, objXYZ);//Schreibt eine Menge Sachen über objXYZ auf die Konsole.
Wie kann ich es nun erreichen das anstatt auf den Bildschirm in eine Datei geschrieben wird? Der FAQ nach wäre das doch ein Filestream.
fstream oFileStream(sPath.c_str(), ios::out); if (oFileStream.is_open()) { DebugObjDump(oFileStream, objXYZ); oFileStream.close(); }cannot convert parameter 1 from '
class std::basic_fstream<char,struct std::char_traits<char> >' to '
struct _iobuf *'
-
Ich habe fopen gefunden (Rückgabewert struct _iobuf *). Das muss ich dann auch unter C++ verwenden?
FILE *oFile = fopen(sPath.c_str(),"w"); if (oFile!=0) { ...
-
Das hat mit C oder C++ eher wenig zu tun. Bis auf die Tatsache, dass es FILE* in beiden und iostream nur in C++ gibt. Du hast halt eine Funktion, die einen FILE* erwartet, der kannst du nicht einfach einen iostream übergeben, damit musst du dich arrangieren oder die Funktion ändern.
-
Wie erstellt man ein "FILE*" unter C++?
-
Mit fopen, genauso wie in C.
-
Ach so, ich dachte ich müsste einen anderen Header einbinden und über std::fopen rangehen. Danke für die Auskunft

-
Hmpf. Ja sorry, der richtige Weg(TM) wäre natürlich, <cstdio> einzubinden und std::fopen, std::FILE usw. zu benutzen. Aber abgesehen davon ist es wie in C.

-
Die <cstdio> findet das VS6 nicht. In std ist auch kein fopen. Zu fopen habe ich nur C Zeugs gefunden mit #include <stdio.h>.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39325.html
-
Visual C++ 6 ist auch nicht wirklich der neueste Compiler. Wenn du es so machst wie in C sollte es funktionieren, Übrigens auch bei neueren Compilern.
-
Ok Danke, ich bleibe dann erstmal bei der C Variante.