是否有一个可以在 Win32 和 MacOSX 系统上使用的跨平台 unicode 字符串类?
我还需要区域设置感知大小写转换。 .NET 在这方面做得很好。难道我们C++程序员要等100年才能得到这样的东西吗?我知道 ICU 库,但它有 20MB,我什至无法将我的代码与它链接起来......总之,我想结束这场噩梦......
Also I need locale aware case conversion. .NET do this very well. Do us C++ programmers have to wait 100 years for such thing ? I am aware of the ICU library but it's 20MB and I can't even get to link my code with it... All in all I want to end this nightmare..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可能想要使用操作系统提供的 API。 Windows 具有 NLS API,用于处理特定于区域设置的字符串比较和大小写转换。
独立的 Unicode 库是 ICU 和 IConv。两者都需要一些时间来学习。数据文件也相当大——预计携带> 10M数据文件,支持大多数语言。
顺便说一句,您的链接错误通常是由于您指定了静态库但导入的函数具有指定 DLL 的 dllimport 属性而引起的。默认情况下,ICU 头文件在其 API 上声明 dllimport。您需要在包含 ICU 标头之前定义一个宏。
You might want to use the API provided by the operating system. Windows has NLS API that deals with locale specific string comparison and case conversion.
Standalone Unicode Libraries are ICU and IConv. Both require some time to learn. The data file is also quite large - expect to carry > 10M data files to support most languages.
BTW, your link error is typically caused by the fact that you specified a static library but the imported function has dllimport attribute which specifies a DLL. By default ICU header files declare dllimport on its APIs. You need to define a macro before including the ICU header.
这就是你所需要的。编码/解码为 UTF-16 和 UCS-32 或您在需要与旧版操作系统交互时所拥有的内容。
That's all you need. Encode/decode to UTF-16 and UCS-32 or what have you when required to interface with legacy operating systems.