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  日月王  阅读(586)  评论(0)    收藏  举报