Dateien - Klasse ofstream
-
In eine Datei kann ich so schreiben:
ofstream fout;
fout.open ("output.txt");
if (fout.goo())
{
for (i=0; i<N; i++)
{
fout >> array[i];
}
}
else
{
//error
}aber warum kann ich auch so darauf zugreifen:
if (fout)
{
...
}hierbei wird ja keine Methode aufgerufen.
MFG Tobi
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo
Dein erstes Beispiel ist auch nicht ganz fehlerfrei... wahrscheinlich Schreibfehler. Allerdings solltest du die Code-Tags verwenden ( sfds )
Zum Thema Dateizugriff findest du in der C++ FAQ den Beitrag "Dateien und Ströme".
bis bald
akari
-
Also mit fout.goo() wirst du vermutlich nicht sehr weit kommen

XTobiX schrieb:
aber warum kann ich auch so darauf zugreifen:
if (fout)
{
...
}hierbei wird ja keine Methode aufgerufen.
MFG Tobi
Nein, aber ein eingebauter Konvertierungsoperator (nach void*).
-
hmm ne eigentlich sollte nicht nach void konvertiert werden oder? müssten die failbits usw abgefragt werden ... naja ...
std::ofstream file_stream("output.txt", std::ios::out); if (!file_stream) return false; // file could not be opened file_stream << "Das ist ja witzig :) "; file_stream.close();
-
(D)Evil schrieb:
hmm ne eigentlich sollte nicht nach void konvertiert werden oder? müssten die failbits usw abgefragt werden ... naja ...
std::ofstream file_stream("output.txt", std::ios::out); if (!file_stream) return false; // file could not be opened file_stream << "Das ist ja witzig :) "; file_stream.close();Nicht nach "void", nach "void*****" (und ein void* kann vom Compiler implizit nach bool umgewandelt werden)

Und die entsprechenden Operatoren sehen etwa so aus:
template<...> class basic_ios { ... public: operator void*() { return good()?this:NULL; } bool operator!() { return bad(); } }