MFC中char*,string和CString之间的转换(待补充)
1.CString->std::string :
非unicode情形下:
CString strMfc=“test“;
std::string strStl;
strStl=strMfc.GetBuffer(0); //获得CString字符串0位置的指针地址
unicode情形下:(VS项目属性有个Use Unicode Character Set,选择的话就是使用了Unicode,其他的好像就是非Unicode了)
CStringW strw = _T("test");
CStringA stra(strw.GetBuffer(0));
strw.ReleaseBuffer();
std::string imgpath=stra.GetBuffer(0);
stra.ReleaseBuffer();
如果你需要修改 CString 中的内容,它有一个特殊的方法可以使用,那就是 GetBuffer,它的作用是返回一个可写的缓冲指针。
如果仅仅是读出CString中的内容,那么只需要用GetBuffer(0)即可。如果后面对CString还有其他操作,那么立刻ReleaseBuffer。
参考文章:https://blog.csdn.net/qq_22642239/article/details/74252898
2.std::string->CString :
CString strMfc;
std::string strStl=“test“;
strMfc=strStl.c_str();
char*转化为CString
CString转化为char *
CString转化为wchar_t *:
wchar_t *pc = cStr.GetBuffer();
BYTE以数值的形式转化为CString,并拼接起来:
CString cStr; BYTE * p3 = new BYTE[3]; *p3 = 1; *(p3+1)=2; *(p3+2)=3; for (int i = 0; i < 3; i++) { CString cStr3; cStr3.Format(L"%02X", *(p3+i)); //一开始报错,加上L就好了 cStr += cStr3; } wcout << "cStr:" << cStr.GetString() << endl; //打印CString,
新战场:https://blog.csdn.net/Stephen___Qin