C - C++ Streams - Stream Buffer

#include <iostream>
#include <streambuf>
#include <locale>
#include <cstdio>
 
class outbuf : public std::streambuf
{
protected:
  /* central output function
   * - print characters in uppercase mode
   */
  virtual int_type overflow (int_type c) {
    if (c != EOF) {
      // Convert lowercase to uppercase
      c = std::toupper(c,getloc());
 
      // and write the character to the standard output.
      if (putchar(c) == EOF) {
        return EOF;
      }
    }
 
    return c;
  }
};
 
 
int main()
{
  outbuf ob;                // Create special output buffer.
  std::ostream out(&ob);    // Initialize output stream with that output buffer.
 
  out << "31 hexadecimal: " << std::hex << 31 << std::endl;
}