string与wstring的互相转换接口(Windows版本)
std::wstring stringToWstring( const std::string & str )
{
LPCSTR pszSrc = str.c_str();
int nLen = MultiByteToWideChar( CP_ACP, 0, pszSrc, -1, NULL, 0 );
if ( nLen == 0 )
return(std::wstring( L"" ) );
wchar_t* pwszDst = new wchar_t[nLen];
if ( !pwszDst )
return(std::wstring( L"" ) );
MultiByteToWideChar( CP_ACP, 0, pszSrc, -1, pwszDst, nLen );
std::wstring wstr( pwszDst );
delete[] pwszDst;
pwszDst = NULL;
return(wstr);
}
std::string wstringToString( const std::wstring & wstr )
{
LPCWSTR pwszSrc = wstr.c_str();
int nLen = WideCharToMultiByte( CP_ACP, 0, pwszSrc, -1, NULL, 0, NULL, NULL );
if ( nLen == 0 )
return(std::string( "" ) );
char* pszDst = new char[nLen];
if ( !pszDst )
return(std::string( "" ) );
WideCharToMultiByte( CP_ACP, 0, pwszSrc, -1, pszDst, nLen, NULL, NULL );
std::string str( pszDst );
delete[] pszDst;
pszDst = NULL;
return(str);
}