• 【转】MFC CStirng、CStringA、CStringW的使用


    1.CString在多字节环境下(未定义UNICODE)为CStringA,在Unicode环境下(定义有UNICODE)为CStringW。

    2.对于涉及到char*与CStringA或CString转换时最好使用CStringA而不要使用内部存储结构不一定的CString,对wchar_t*与CStringW或CString同理。

    3.CStringA在UNICODE环境下可以正确转换为CString,同样CString在UNICODE环境下转换为CStringA:

    CStringA strA = "汉字啊";
    CString str;
    str = strA; //注意这里应调用赋值操作符重载函数,不能直接CString str = strA,因为会调用赋值构造函数而出错
    CString str2 = _T("也是汉字啊");
    CStringA strA2;
    strA2 = str2;

    同理CStringW在多字节环境下也可以正确转换为CString,CString在多字节环境下可正确转换为CStringW:

    CStringW strW = L"汉字啊";
    CString str;
    str = strW;
    CString str2 = "也是汉字啊";
    CStringW strW2;
    strW2 = str2;

    3.对于CStringA转换为const char*(注意const不能少)不要使用GetBuffer(),因为这样会造成不必要的的内存分配,并且使用后还需要ReleaseBuffer();

    其实CStringA可以通过operator LPSTR()操作符重载直接转换为const char*:

    CString str = “汉字”;//只能是CStringA或多字节环境下的CString

    const char* c_str = str;//直接转换,正确。

    对CStringW同理:

    CString str = _T("汉字啊");
    const wchar_t* c_str = str; //转换正确


    ————————————————
    版权声明:本文为CSDN博主「Linux菜_鸟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u011519892/article/details/17286587

  • 相关阅读:
    mustache.js 使用
    iscroll4 input textarea不能获得焦点问题
    object-fit?
    window.open()被拦截问题
    JSONP
    mouseenter和mouseover的区别
    前端页面卡顿-代码优化
    如何设置html中img宽高相同-css
    iscroll使用之页面卡顿问题
    iScroll的简单使用
  • 原文地址:https://www.cnblogs.com/wutou/p/16335797.html
Copyright © 2020-2023  润新知