codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#pragma once // Copyright (c) 2011, Alf P. Steinbach //--------------------------------------------------------- Dependencies: #include <assert.h> #include <string> #include <sstream> //#include "platform_adaption.h" //--------------------------------------------------------- Interface: namespace progrock{ namespace cppx{ namespace narrow { using std::string; using std::ostringstream; template< class Type > string stringFrom( Type const& v ) { ostringstream stream; stream << v; return stream.str(); } template<> inline string stringFrom( string const& s ) { return s; } class S { private: string s_; template< class Type > string stringFrom( Type const& v ) { return narrow::stringFrom( v ); } static char const* stringFrom( char const* s ) { assert( s != 0 ); return s; } public: template< class Type > S& operator<<( Type const& v ) { s_ += stringFrom( v ); return *this; } string const& str() const { return s_; } operator string const& () const { return str(); } char const* cStr() const { return s_.c_str(); } operator char const* () const { return cStr(); } }; } // namespace narrow namespace wide { using std::wstring; using std::wostringstream; template< class Type > wstring stringFrom( Type const& v ) { wostringstream stream; stream << v; return stream.str(); } template<> inline wstring stringFrom( wstring const& s ) { return s; } class S { private: wstring s_; template< class Type > wstring stringFrom( Type const& v ) { return wide::stringFrom( v ); } static wchar_t const* stringFrom( wchar_t const* s ) { assert( s != 0 ); return s; } public: template< class Type > S& operator<<( Type const& v ) { s_ += stringFrom( v ); return *this; } wstring const& str() const { return s_; } operator wstring const& () const { return str(); } wchar_t const* cStr() const { return s_.c_str(); } operator wchar_t const* () const { return cStr(); } }; } // namespace wide } } // namespace progrock::cppx
Private
[
?
]
Run code
Submit