Typwandlung von Exemplaren [] (Typwandlung von Exemplaren), Leitsätze, Seite 722269
https://www.purl.org/stefan_ram/pub/exemplarwandlung_c++ (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C++-Kurs

Überladenen Typwandlungen von Exemplaren in C++ 
Der Wahrheitswert einer Ausgabestroms

Der Versuch zum Anlegen einer Datei kann auch scheitern (beispielsweise, wenn der gewünschte Dateiname nicht zulässig ist). Damit das Programm darauf reagieren kann, muß es ja irgendwie davon erfahren. Die Stromklassen ermöglichen es, zu erfahren, ob ein Strom „gescheitert“ ist, das heißt, ob der letzte Versuch mit dem diesem Strom etwas zu machen gescheitert ist.

Was passiert, wenn ein Objekt einer Klasse in den Typ »bool« gewandelt wird, wird von der Klasse des Objekts  festgelegt.

Im Falle einer Standard-Stromklasse ergibt die Wandlung nach »bool« den Wert »false«, genau dann wenn die Stromklasse gescheitert  ist. In diesem Fall ist sie auch nicht mehr verwendbar.

Das folgende Programm sollte daher »1« (für true ) ausgeben, wenn die Datei angelegt werden konnte  und das Stromobjekt nun verwendbar ist.

main.cpp

#include <iostream>
#include <ostream>
#include <fstream>
#include <initializer_list>

int main()
{ ::std::ofstream out{ "alpha" };
::std::cout << static_cast< bool >( out )<< '\n'; }

::std::cout
1
main.cpp

#include <iostream>
#include <ostream>
#include <fstream>
#include <initializer_list>

int main()
{ ::std::ofstream out{ "alpha/:\\*?" };
::std::cout << static_cast< bool >( out )<< '\n'; }

::std::cout
0

(Die obigen Ausgaben »1« und »0« sind nur beispielhaft zu verstehen. Was die obigen Programm tatsächlich ausgeben, kann von der Ausführungsumgebung abhängen.)

Normentwurf, Stand 2011*
27.5.5.4 basic_ios flags functions [iostate.flags]
explicit operator bool() const;
Returns: false if failbit or badbit is set in rdstate()

¹Diese Zeile wurde hier etwas vereinfacht, das Zitat ist also nicht ganz wörtlich.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722269 stefan_ram:722269 Typwandlung von Exemplaren Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722269, slrprddef722269, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/exemplarwandlung_c++