| | #ifndef __string_algs_h__
#define __string_algs_h__
#include <locale>
#include <string>
#ifdef WIN
#include <xstring>
#endif
namespace string_algs
{
inline std::wstring string_to_wstring( const char* in, std::locale loc = std::locale() )
{
unsigned int len = (unsigned int) strlen( in );
std::wstring out( len, 0 );
const char *i = in, *ie = (in + len);
std::wstring::iterator j = out.begin();
for( ; i!=ie; ++i, ++j )
*j = std::use_facet< std::ctype< wchar_t > > ( loc ).widen( *i );
return out;
}
inline std::wstring string_to_wstring( const std::string& in, std::locale loc = std::locale() )
{
std::wstring out( in.length(), 0 );
std::string::const_iterator i = in.begin(), ie = in.end();
std::wstring::iterator j = out.begin();
for( ; i!=ie; ++i, ++j )
*j = std::use_facet< std::ctype< wchar_t > > ( loc ).widen( *i );
return out;
}
inline std::string wstring_to_string( const wchar_t* in, std::locale loc = std::locale() )
{
unsigned int len = (unsigned int) wcslen( in );
std::string out( len, 0 );
const wchar_t *i = in, *ie = (in + len);
std::string::iterator j = out.begin();
for( ; i!=ie; ++i, ++j )
*j = std::use_facet< std::ctype< char > > ( loc ).widen( *i );
return out;
}
inline std::string wstring_to_string( const std::wstring& in, std::locale loc = std::locale() )
{
std::string out( in.length(), 0 );
std::wstring::const_iterator i = in.begin(), ie = in.end();
std::string::iterator j = out.begin();
for( ; i!=ie; ++i, ++j )
*j = std::use_facet< std::ctype< char > > ( loc ).widen( *i );
return out;
}
}
#endif
|