开发过程中的记录,Mark一下,以后也会用到.
#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;
}