Das folgende Code-Beispiel stammt aus dem Buch
Objektorientiertes Programmieren in C++
- Ein Tutorial für Ein- und Umsteiger
von Nicolai Josuttis, Addison-Wesley München, 2001
© Copyright Nicolai Josuttis 2001
#include <iostream>
#include <fstream>
#include <string>
void redirect(std::ostream&,const std::string&);
int main()
{
std::cout << "erste Zeile" << std::endl;
redirect(std::cout, "redirect.txt"); // cout nach redirect.txt umleiten
std::cout << "letzte Zeile" << std::endl;
}
void redirect (std::ostream& strm, const std::string& dateiname)
{
// Datei (mit dazugehörigem Puffer) zum Schreiben öffnen
std::ofstream datei(dateiname.c_str());
// Ausgabepuffer des übergebenen Streams merken
std::streambuf* strm_puffer = strm.rdbuf();
// Ausgaben in die Datei umlenken
strm.rdbuf(datei.rdbuf());
datei << "direkt in die Datei geschriebene Zeile" << std::endl;
strm << "auf den umgelenkten Stream geschriebene Zeile"
<< std::endl;
// alten Ausgabepuffer des übergebenen Streams restaurieren
strm.rdbuf(strm_puffer);
} // schließt die Datei und den dazugehörigen Puffer