2001

Grusel++ of the month

Home
Download Source
/******************************************************************************/
/*                                                                            */
/*                                                          FILE: january.cpp */
/*                                                                            */
/*  From Hello.begin() to World.end() with the STL                            */
/*  ==============================================                            */
/*                                                                            */
/*  Compiled and tested with Visual C++ V6.0                                  */
/*                                                                            */
/*  V1.00   17-JAN-2001   P. Tellenbach   http://www.heimetli.ch/             */
/*                                                                            */
/******************************************************************************/

#include <iostream>
#include <algorithm>

class oi : public std::ostream_iterator<char>
{
 public:
   oi( ostream_type &os ) : std::ostream_iterator<char>( os )
   {
   }

 template< typename V >
   int operator ()( V value )
   {
      return !value ;
   }
} ;

int main( )
{
   std::string  Hello = "Hello World !\n" ;
   std::string &World =  Hello ;

   return std::copy( Hello.begin(), World.end(), oi(std::cout) )( 42 ) ;
}

Update 12. January 2021

The compiler complained about missing templates. Including the iterator-Header fixed that.

No other changes were necessary.

/******************************************************************************/
/*                                                                            */
/*                                                          FILE: january.cpp */
/*                                                                            */
/*  From Hello.begin() to World.end() with the STL                            */
/*  ==============================================                            */
/*                                                                            */
/*  Compiled and tested with Visual C++ V6.0                                  */
/*                                                                            */
/*  V1.00   17-JAN-2001   P. Tellenbach   https://www.heimetli.ch/            */
/*                                                                            */
/*  Compiled and tested with g++ V8.3.0                                       */
/*                                                                            */
/*  V2.00   12-JAN-2021   P. Tellenbach   https://www.heimetli.ch/            */
/*                                                                            */
/******************************************************************************/

#include <iostream>
#include <algorithm>
#include <iterator>

class oi : public std::ostream_iterator<char>
{
 public:
   oi( ostream_type &os ) : std::ostream_iterator<char>( os )
   {
   }

 template< typename V >
   int operator ()( V value )
   {
      return !value ;
   }
} ;

int main( )
{
   std::string  Hello = "Hello World !\n" ;
   std::string &World =  Hello ;

   return std::copy( Hello.begin(), World.end(), oi(std::cout) )( 42 ) ;
}