Listing 6

// output_redirection_demo.hpp
#include <fstream>
#include <streambuf>
#include "input_redirection_demo.hpp"

namespace output_redirection_demo
{
  using namespace std;
  int main() {
    ofstream out("output.txt");
    streambuf* old_cout = cout.rdbuf(out.rdbuf());
    int ret = 1;
    try {
      ret = input_redirection_demo::main();
      cout.rdbuf(old_cout);
    }
    catch (...) {
      cout.rdbuf(old_cout);
      return ret;
    }
    return ret;
  }
}