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,
posted @ 2020-01-13 22:45  心媛意码  阅读(371)  评论(0编辑  收藏  举报