Stream Manipulatoren für eigene Typen
-
Kann man die Stream Manipulatoren der STL für eigene Typen anwenden?
Beispiel: Ich habe eine Klasse, die Zahlen repräsentiert. Ausgeben tue ich diese über die STL streams:class zahlenklasse { friend std::ostream& operator << (std::ostream& os, const zahlenklasse& objekt); }Jetzt würde ich aber gerne wissen, ob zB. std::hex auf den stream angewendet wurde, damit ich die Ausgabe entsprechend ändern kann. Ist das möglich?
-
XavierN schrieb:
Jetzt würde ich aber gerne wissen, ob zB. std::hex auf den stream angewendet wurde, damit ich die Ausgabe entsprechend ändern kann. Ist das möglich?
Klar. Das ist sogar genauso gedacht. Die ganzen Sachen, welche die Streams von ios_base erben, helfen dabei:
-
Simples Beispiel:
#include <iostream> using namespace std; void check(ostream& o) { if (o.flags() & ostream::hex) cout << "hex" << endl; else cout << "no hex" << endl; if (o.flags() & ostream::showbase) cout << "showbase" << endl; else cout << "no showbase" << endl; } int main(){ check(cout); cout << hex; check(cout); cout << showbase; check(cout); return 0; }Ausgabe:
no hex no showbase hex no showbase hex showbase
-
Danke Gagistandor, genau so ein Beispiel habe ich gesucht
