开发过程中的记录,Mark一下,以后也会用到.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#include <iostream> #include <sstream> #include <cassert> using namespace std; class mystreamw { private: wstringstream _ss; wstring _str; public: friend mystreamw& myend(mystreamw& ms); friend wostream& operator <<(wostream& os, const mystreamw& ms); public: mystreamw& operator<< (const int& val ) { _ss <<val; wcout << val; return *this; } mystreamw& operator<< (const wchar_t* s ) { _ss <<s; wcout << s; return *this; } mystreamw& operator<< (const double& val) { _ss <<val; wcout << val; return *this; } mystreamw& operator<<(mystreamw& ( __cdecl *fun)(mystreamw&) ); }; mystreamw& myend(mystreamw& ms) { ms._str = ms._ss.str(); wcout << endl; return ms; } wostream& operator <<(wostream& os, const mystreamw& ms) { os<<ms._str; return os; } mystreamw& mystreamw::operator<<(mystreamw& (*fun)(mystreamw&) ) { assert(NULL != fun); return ((*fun)(*this)); } int _tmain(int argc, _TCHAR* argv[]) { mystreamw mywcout; mywcout << 5 << _T("abc") << 3.57 << myend; mywcout << 666 << myend; getchar(); return 0; } |
转载请注明:exchen's blog » 自定义流操作符 重载wcout