gpt4 book ai didi

c++ - 在 C++ 中创建同时支持 Unicode 和 ASCII 的库的最佳实践是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:49:27 28 4
gpt4 key购买 nike

我正在编写一些将在内部和客户中使用的库,并且想知道同时支持 Unicode 和 ASCII 的最佳方法是什么。看起来 Microsoft(在 MFC 库中)编写了 Unicode 和 ASCII 类,并使用宏在头文件中做了类似的事情:

#ifdef _UNICODE
#define CString CStringW
#else
#define CString CStringA
#endif

虽然我不是宏的 super 粉丝,但它确实可以。如果我正在使用 STL 编写库,那么编写包含如下内容的 header 是否有意义:

#ifdef _UNICODE
#define GetLastErrorString GetLastErrorStringW
#else
#define GetLastErrorString GetLastErrorStringA
#endif

std::string GetLastErrorStringA();
std::wstring GetLastErrorStringW();

或者我应该发布单独的库,一个用于 ASCII,一个用于 Unicode?

只是想知道人们认为在这种情况下最好的做法是什么。

更新:解决一些评论和问题:

  • 这些将是 C++ 类库。
  • 我认为我需要使用 UTF-16 编码,因为我想支持亚洲字符集。
  • 我实现 Unicode 的原因有两个:1) 所有新的 SDK 都支持 Unicode,我不确定 future 的 SDK 或第三方库将来是否会支持单独的 ASCII 版本。 2) 虽然我们不会完全国际化我们的应用程序,但如果我们能够处理用户输入(如姓名)和从包含亚洲字符的路径加载文件,那就太好了。

最佳答案

我会在内部使库完全采用 Unicode。然后,将存在一组用于 ASCII 的 C++ 适配器类,这些类将转换为 Unicode 实现。

关于c++ - 在 C++ 中创建同时支持 Unicode 和 ASCII 的库的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1499714/

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