且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MFC中CString和string的相互转换

更新时间:2021-07-15 14:59:43

下面的代码应该同时适用于多字节字符集和Unicode字符集,上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//将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的内容。

1
2
3
4
5
6
7
8
9
10
11
//将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 ***

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1427805如需转载请自行联系原作者

RQSLT