/******************************************************************************/ /* */ /* FILE: DECEMBER.CPP */ /* */ /* Did you know that the delimiter of an ostream_iterator can be modified ? */ /* ======================================================================== */ /* */ /* Compiled and tested with Visual C++ .NET */ /* */ /* V1.00 31-DEC-2003 P. Tellenbach http://www.heimetli.ch/ */ /* */ /******************************************************************************/ #include <iostream> #include <iterator> #include <algorithm> using namespace std ; int main() { string msg = "Hlowrd!" ; char *ptr = "el ol \n" ; char delimiter[2] = " " ; ostream_iterator<char> oipc(cout,delimiter) ; for( string::iterator it = msg.begin(); it != msg.end(); ++it ) { delimiter[0] = *ptr++ ; *oipc++ = *it ; } return 0 ; }
Update 31. December 2023
The compiler wants a const pointer to the string literal, which makes sense.
/******************************************************************************/ /* */ /* FILE: DECEMBER.CPP */ /* */ /* Did you know that the delimiter of an ostream_iterator can be modified ? */ /* ======================================================================== */ /* */ /* Compiled and tested with Visual C++ .NET */ /* */ /* V1.00 31-DEC-2003 P. Tellenbach https://www.heimetli.ch */ /* */ /* Compiled and tested with g++ version 11.2.0 */ /* */ /* V1.10 31-DEC-2023 P. Tellenbach https://www.heimetli.ch */ /* */ /******************************************************************************/ #include <iostream> #include <iterator> #include <algorithm> using namespace std ; int main() { string msg = "Hlowrd!" ; const char *ptr = "el ol \n" ; char delimiter[2] = " " ; ostream_iterator<char> oipc(cout,delimiter) ; for( string::iterator it = msg.begin(); it != msg.end(); ++it ) { delimiter[0] = *ptr++ ; *oipc++ = *it ; } return 0 ; }