0

我还需要区域设置感知大小写转换。.NET 做得很好。我们 C++ 程序员必须等待 100 年才能得到这样的东西吗?我知道 ICU 库,但它是 20MB,我什至无法将我的代码与它链接起来......总而言之,我想结束这个噩梦......

4

2 回答 2

3

您可能希望使用操作系统提供的 API。Windows 具有处理特定于区域设置的字符串比较和大小写转换的 NLS API。

独立的 Unicode 库是 ICU 和 IConv。两者都需要一些时间来学习。数据文件也相当大 - 预计携带 > 10M 的数据文件以支持大多数语言。

顺便说一句,您的链接错误通常是由于您指定了静态库但导入的函数具有指定 DLL 的 dllimport 属性。默认情况下,ICU 头文件在其 API 上声明 dllimport。您需要在包含 ICU 标头之前定义一个宏。

于 2011-02-19T16:08:42.847 回答
2
  • libiconv是一个跨平台的 unicode 库,是glibc的一部分,也是 POSIX.1-2001 标准的一部分。它也可以在 Mac 和 Windows 上使用。
  • UTF-8是一种向后兼容 ASCII 的字符编码。
  • C 字符串是可以保存 ASCII 和 UTF-8 的以空字符结尾的字节数组。

这就是你所需要的。编码/解码为 UTF-16 和 UCS-32 或在需要与旧版操作系统交互时拥有的内容。

于 2011-02-19T15:59:40.170 回答