• 如何将CString转换成WCHAR


    转载:http://bbs.csdn.net/topics/100075810          八楼的答案

    如果你使用VC2002(2003更好)或以上的话,CString转WCHAR简单的很:

    1,假设你的程序是MBCS编译,并且不打算兼容UNICODE的话,那么:

    {
        USES_CONVERSION;
        
        CString sText = "text string";
        WCHAR wszWideString[N];

        wcscpy(wszWideString, CA2CW(sText));
    }

    2,假设你的程序是UNICODE编译,或者MBCS、UNICODE兼容的话,那么:

    {
        USES_CONVERSION;
        
        CString sText = _T("text string");
        WCHAR wszWideString[N];

        wcscpy(wszWideString, CT2CW(sText));
    }

    所以,你应该到MSDN里查询如下关键字即可:

    1, USES_CONVERSION
    2, CA2CW (会看到一族 X2X 函数)

    VC2002里的这族函数在类型转换上有些缺陷,但是调用时自行强制后就没问题了,2003里彻底没有缺陷了。

    这些要归功于升级改版后的ATL。

    最后,这些函数归根到底是基于API MultiByteToWideChar/WideCharToMultiByte的,在Windows中是需要安装有相应的码表才能正确转换的。

    比如说,你的程序是MBCS编译的,你的 CHAR[] 字符串里的中文是GB2312编码的,在纯英文Windows下(纯英文是指没有安装中文码表时),CA2CW()或MultiByteToWideChar()是都不能正确转换的!

    所以说,如果你只是被迫需要兼容一些第三方API调用,可以使用一下上述转换方法。但是对于跟语言文字、字符串息息相关的程序模块来说,要想走向世界,一定要用UNICODE编译!

  • 相关阅读:
    与大神聊天1h
    《海上钢琴师》观后感
    《小王子》读书笔记
    Joining Data with dplyr in R
    SQL学习笔记1
    电影《受益人》观后感
    markdown文本编辑学习笔记2
    importing-cleaning-data-in-r-case-studies
    一个测试人员的工作该怎么开展
    测试总结报告
  • 原文地址:https://www.cnblogs.com/ldjhust/p/3193475.html
Copyright © 2020-2023  润新知