• CString 与 std::string 相互转化


     MFC中CString 与 std::string 相互转化

    CString实际是CStringT, 也就是模板类, 

    在UNICODE环境下,实际是CStringW, 

    在多字符集环境下,实际是CStringA 

    std::string就是多字符集的. 

     

    UNICODE环境下

    • CStringW-->std::string

    CString实际是CStringW,要转换成多字符集,需进行转码。使用WideCharToMultiByte 转换成多字符集,然后再构造std::string

    • std::string-->CStringW

    因为CStringT模板类已经自动做了 char* 到 wchar_t* 的转码。

    • 实例
    //使用Unicode 字符集
    CString strCS("HelloWorld");
    USES_CONVERSION;
    std::string strS(W2A(strCS)); //CString-->std::string
    CString strCStemp;
    strCStemp = strS.c_str();//std::string-->CString

    注意:std::string-->CString时,不可以写在同一行:

    CString strCStemp = strS.c_str();//ERROR

    多字符集

    CString 实际就是CStringA. 

    //CStringA-->std::string
    CString strCS("HelloWorld");
    std::string strS;
    strS = strCS.GetBuffer(0);
    
    //std::string-->CStringA
    CString strCStemp = strS.c_str();//注意,可写在同一行


     

  • 相关阅读:
    实现毛玻璃效果
    iOS-调用系统的短信和发送邮件功能,实现短信分享和邮件分享
    集成环信
    HTTP 方法:GET 对比 POST
    虚拟DOM
    javascript的回调函数 同步 异步
    jQuery中的Deferred和promise
    web性能
    JSONP
    java
  • 原文地址:https://www.cnblogs.com/whl2012/p/4811912.html
Copyright © 2020-2023  润新知