2017-03-28 1 views
1

Haftungsausschluss: Ich bin ein kompletter C++ Anfänger, und wenn es eine ähnliche Antwort auf diese Frage gibt, bitte leiten Sie mich dazu, wie ich es vielleicht verpasst haben, nicht viel zu wissen Art der Theorie.Anzeige Eingänge zu Std :: ostream

Angenommen, ich eine Methode, die einen Verweis auf ein ostream akzeptiert:

printAllObjects(std::ostream& os); 

Ich gehe davon aus es Änderungen an der ostream macht, so dass man die Liste der alle Objekte in eine Datei drucken können, sagen. (Ich könnte hier falsch liegen)

Gibt es eine Möglichkeit zu sehen, was es in die ostream schreibt? (über cout vorzugsweise)?

+0

Steuern Sie 'printAllObjects' oder ist es Teil einer Bibliothek, die Sie nicht kontrollieren können? – Tas

+0

Nein, es ist Teil der Bibliothek, die wir bekommen haben, leider – qasimir

Antwort

6

std::coutist ein std::ostream, so passieren nur std::cout an die Funktion und Sie werden sehen, was es tut:

printAllObjects(std::cout); 

Diese Flexibilität der eigentliche Zweck ist ein Verweis auf std::ostream zu akzeptieren!

Andere Stromtypen vom std::ostream Basis vererben sind:

  • std::ofstream (für die Dateiausgabe)
  • std::ostringstream (für Streich Ausgang).

das nicht, dass std::cout zu sagen ist, ist eine Art; es ist nicht. Es ist eine spezielle, globale Instanz von std::ostream.

+0

'std :: cout' ist kein Objekt, das ich vermute? Nun, das scheint irgendwie zu kompilieren, aber ein neues Problem hindert mich daran, es zu testen. Ich werde zu Ihnen zurückkommen, wenn es erfolgreich ist, aber in der Zwischenzeit: Danke (provisorisch) – qasimir

+0

@qasimir: Es ist ein Objekt. –

Verwandte Themen