gpt4 book ai didi

C++ 设计 : Design to support Unicode msg as well as ASCII msg

转载 作者:行者123 更新时间:2023-11-28 06:19:51 26 4
gpt4 key购买 nike

目前我的代码有 CString DisplayMessage,我的代码全部使用它在客户端和服务器之间交换 DisplayMessage。现在随着软件走向国际化,我希望 DisplayMessage 具有 Unicode 字符串消息。

我发现的一种技术是

  1. 创建:

    Class CDisplayMessage{
    CString ASCIIMsg;
    CStringW UnicodeMsg;
    bool IsUnicode;
    ...
    };

    ASCII msg 是必需的,这样我可以使消息向后兼容。

  2. CString DisplayMessage 的数据类型替换为 CDisplayMessage DisplayMessage

  3. 然后需要更改所有使用它的地方(那更让人头疼)。用法如下:

    DisplayMessage = some other CString;

    DisplayMessage = "sdfsdf";

问题:

任何人都可以建议我提供一些其他解决方案或改进我的解决方案,以便他们在所有其他地方所做的更改最少。

注意:

  • 平台:MS VISUAL STUDIO (Windows)、C++
  • CharSet:多字节字符集(不可更改)

最佳答案

我会简单地使用 CStringW 并在必要时转换为 CStringA。请注意,CString 取决于 _UNICODE 设置。因此,如果定义了 UNICODE,它将编译为 CStringW,如果定义了 MBCS,则编译为 CStringA

转换非常简单:

CStringW sTestW( L"Test" );
CStringA sTestA( "Test" );

// ASCII <-> UTF16
CStringW sConvertW = sTestA;
CStringA sConvertA = sTestW;

// UTF16 <-> UTF8
CStringA CUtility::UTF16toUTF8(const CStringW& utf16)
{
return CW2A(utf16, CP_UTF8);
}

CStringW CUtility::UTF8toUTF16(const CStringA& utf8)
{
return CA2W(utf8, CP_UTF8);
}

关于C++ 设计 : Design to support Unicode msg as well as ASCII msg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29511887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com