home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / C++-7 / DISK4 / SAMPLES / IOSTUTOR / EXIOS202.CP$ / EXIOS202
Encoding:
Text File  |  1991-11-25  |  1.0 KB  |  42 lines

  1. // exios202.cpp
  2. // A custom manipulator with a char* parameter
  3. #include <iostream.h>
  4.  
  5. #include <iomanip.h>
  6. #include <string.h>
  7.  
  8. typedef char* charp;
  9. IOMANIPdeclare( charp );
  10.  
  11. class money {
  12. private:
  13.     long value;
  14.     static char *szCurrentPic;
  15. public:
  16.     money( long val ) { value = val; }
  17.     friend ostream& operator << ( ostream& os, money m ) {
  18.         // A more complete function would merge the picture
  19.         // with the value rather than simply appending it
  20.         os << m.value << '[' << money::szCurrentPic << ']';
  21.         return os;
  22.     }
  23.     friend ostream& setpic( ostream& os, char* szPic ) {
  24.         money::szCurrentPic = new char[strlen( szPic ) + 1];
  25.         strcpy( money::szCurrentPic, szPic );
  26.         return os;
  27.     }
  28. };
  29. char *money::szCurrentPic;  // Static pointer to picture
  30.  
  31. OMANIP(charp) setpic(charp c)
  32. {
  33.     return OMANIP(charp) (setpic, c);
  34. }
  35.  
  36. void main()
  37. {
  38.     money amt = 35235.22;
  39.     cout << setiosflags( ios::fixed );
  40.     cout << setpic( "###,###,###.##" ) << "amount = " << amt << endl;
  41. }
  42.