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,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingLife99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值