string与wstring的互相转换接口(Windows版本)

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);
}

  

posted @ 2019-06-21 09:43  日月王  阅读(536)  评论(0编辑  收藏  举报