mfc多字节和unicode两种环境的CString和string相互转换

多字节环境下无法使用GetBuffer将CString转string,使用以下方法转换:

string toString(CString cs) {
#ifdef _UNICODE

        //如果是unicode工程
        USES_CONVERSION;
        std::string str(W2A(cs));
        return str;
#else
        //如果是多字节工程 
        std::string str(cs.GetBuffer());
        cs.ReleaseBuffer();
        return str;

#endif // _UNICODE 
}

CString toCString(string str) {
#ifdef _UNICODE
        //如果是unicode工程
        USES_CONVERSION; CString s(str.c_str());
        CString ans(str.c_str());
        return ans;
#else
        //如果是多字节工程 
        //string 转 CString
        CString ans;
        ans.Format("%s", str.c_str());
        return ans;
#endif // _UNICODE  
}
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页