我目前正在开发一个跨平台的 C++ 库,我打算将其识别为 Unicode。我目前通过 typedef 和宏为 std::string 或 std::wstring 提供编译时支持。这种方法的缺点是它迫使您使用 L("string")
之类的宏,并大量使用基于字符类型的模板。
支持和反对仅支持 std::wstring 的论点是什么?
仅使用 std::wstring 是否会阻碍首选 UTF-8 编码的 GNU/Linux 用户群?
最佳答案
很多人希望使用 UTF-8 (std::string) 而不是 UCS-2 (std::wstring) 的 unicode。 UTF-8 是很多 Linux 发行版和数据库的标准编码——所以不支持它会是一个巨大的劣势。在 Linux 上,每次使用字符串作为参数调用库中的函数都需要用户将( native )UTF-8 字符串转换为 std::wstring。
在 gcc/linux 上,std::wstring 的每个字符有 4 个字节,而在 Windows 上有 2 个字节。这会在读取或写入文件(以及从/向不同平台复制它们)时导致奇怪的效果。我宁愿为跨平台项目推荐 UTF-8/std::string。
关于c++ - 支持和反对在跨平台库中专门支持 std::wstring 的论点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651390/