Annotation of mstools/samples/iostutor/exios202.cpp, revision 1.1

1.1     ! root        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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.