zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    处处留心皆学问,世事如棋局局新…
    【转载】2017 软件测试行业现状调查报告_From_51testing_On_20180625
    Hello World In Go ...
    C# 易错题整理
    C# 函数
    C# 哈希表,队列,栈
    C# 数组,集合,泛型集合
    C# 如何生成验证码
    C# 年月日时间题+Timespan
    闰年的一个BUG
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/12186385.html
Copyright © 2011-2022 走看看