Unterscheidung von std::iostream ob std::istream oder std::ostream
-
Gibts die Möglichkeit bei einem std::iostream zu unterscheiden ob es ein i-oder ostream ist?
-
Nein, wozu auch - ein IOStream ist beides (auf einmal) - Stichwort Mehrfachvererbung.
-
CStoll schrieb:
Nein, wozu auch - ein IOStream ist beides (auf einmal) - Stichwort Mehrfachvererbung.
Ok, ich sollte vll. genauer werden:
Gibt es die Möglichkeit festzustellen ob ein std::iostream* in dem eigentlich ein
std::fstream steckt lesend oder schreibend geöffnet ist.
-
Auf portablem Weg: nein. Da mußt du dir schon selber merken, wie du den fstream geöffnet hast (oder du versuchst einfach zu lesen/schreiben und schaust nach, wie der Stream reagiert).
(an der Grenze der Legalität: Vermutlich steht irgendwo in den privaten Membern des Streams, wie er geöffnet wurde, aber sicher bin ich da nicht)
PS: Wozu brauchst du so eine Unterscheidung überhaupt?
-
CStoll schrieb:
Auf portablem Weg: nein. Da mußt du dir schon selber merken, wie du den fstream geöffnet hast (oder du versuchst einfach zu lesen/schreiben und schaust nach, wie der Stream reagiert).
(an der Grenze der Legalität: Vermutlich steht irgendwo in den privaten Membern des Streams, wie er geöffnet wurde, aber sicher bin ich da nicht)
PS: Wozu brauchst du so eine Unterscheidung überhaupt?
Eine Methode bekommt einen iostream* und muss das intern unterscheiden ob gelesen oder geschrieben werden soll. Das Interface iss vom Design her Mist aber ich will es nur ungern ändern um keinen fremden Code kaputt zu machen.
Da muss ich mal schauen ob ich das mit dem probeweise Schreiben/Lesen mal ausprobier.Danke hirsch