项目字符集使用Unicode字符集,然后CString和string之间转换时,
发现使用GetBuffer()和c_str()两个常用的函数进行它们之间转换时还是有问题
然后在网上发现了这篇很有意思的文章,并且使用了这种方法顿时解决了问题,故收藏整理之
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
}