您的位置:首页 > 其它

string 和 wstring 互相转换的方法(即 Ansi & Unicode 在标准库下的互转)

2017-01-22 17:08 609 查看
注意一点:在控制台工程中不能使用MFC的东西。若要使用,就要把

的库设置成共享dll库;
 
   
   
   
  在控制台中一般不这么用,如果要用,还要加入头文件。但有时候会报出windows,h
重复包含的一个错误。
 
   
   
   
  应该注意区分控制台工程和MFC工程的区别,
控制台工程,使用的是标准的windows库,即常说标准C++库文件。而 MFC
使用的是MFC的库,两者有根本区别的;
以下是 std::string 和 std::wstring 互相转换的方法:(即 Ansi & Unicode在标准库下的互转)
1、StringToWString
BOOL StringToWString(const std::string &str,std::wstring &wstr)
{    
    int nLen = (int)str.length();    
    wstr.resize(nLen,L' ');
    int nResult = MultiByteToWideChar(CP_ACP,0,(LPCSTR)str.c_str(),nLen,(LPWSTR)wstr.c_str(),nLen);
    if (nResult == 0)
    {
        return FALSE;
    }
    return TRUE;
}
2、WStringToString
 // string高字节不为0,返回FALSE
BOOL WStringToString(const std::wstring &wstr,std::string &str)
{    
    int nLen = (int)wstr.length();    
    str.resize(nLen,' ');
    int nResult = WideCharToMultiByte(CP_ACP,0,(LPCWSTR)wstr.c_str(),nLen,(LPSTR)str.c_str(),nLen,NULL,NULL);
    if (nResult == 0)
    {
        return FALSE;
    }
    return TRUE;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: