下面的代码应该同时适用于多字节字符集和Unicode字符集,上代码:
//将CString转为std::string string CMyUtil::CString2string(const CString &cstr) { CStringA stra((TCHAR *)(LPCTSTR)(cstr)); string str((char *)(LPCSTR)(stra)); return str; } //将std::string转为CString CString CMyUtil::string2CString(const string &str) { CString cstr(str.c_str(), str.length()); return cstr; }
值得说明一下的是,walker认为下面这个版本完全没必要,因为我们并不需要更改原始CString的内容。
//将CString转为std::string(walker认为没必要这样用) string CMyUtil::CString2string(CString cstr) { CStringA stra(cstr.GetBuffer(0)); cstr.ReleaseBuffer(); string str = stra.GetBuffer(0); stra.ReleaseBuffer(); return str; }
*** walker ***