27 Input/output library [input.output]

27.5 Iostreams base classes [iostreams.base]

27.5.3 Class ios_base [ios.base] Types [ios.types] Class ios_base::Init [ios::Init]

namespace std {
  class ios_base::Init {
    static int init_cnt; // exposition only

The class Init describes an object whose construction ensures the construction of the eight objects declared in <iostream> ([iostream.objects]) that associate file stream buffers with the standard C streams provided for by the functions declared in <cstdio> ([c.files]).

For the sake of exposition, the maintained data is presented here as:

  • static int init_cnt, counts the number of constructor and destructor calls for class Init, initialized to zero.


Effects: Constructs an object of class Init. Constructs and initializes the objects cin, cout, cerr, clog, wcin, wcout, wcerr, and wclog if they have not already been constructed and initialized.


Effects: Destroys an object of class Init. If there are no other instances of the class still in existence, calls cout.flush(), cerr.flush(), clog.flush(), wcout.flush(), wcerr.flush(), wclog.flush().