支持和反对在跨平台库中独占支持std :: wstring的参数

Osk*_* N. 6 c++ unicode cross-platform wstring

我目前正在开发一个跨平台的C++库,我打算用Unicode识别它.我目前通过typedef和宏对std :: string或std :: wstring进行编译时支持.这种方法的缺点是它会强制您使用宏,L("string")并根据字符类型大量使用模板.

支持std :: wstring只支持和反对的论据是什么?

使用std :: wstring是否会影响GNU/Linux用户群,首选UTF-8编码?

Dav*_*rle 3

很多人希望使用带有 UTF-8 (std::string) 的 unicode,而不是 UCS-2 (std::wstring)。UTF-8 是许多 Linux 发行版和数据库上的标准编码 - 因此不支持它将是一个巨大的缺点。在 Linux 上,每次以字符串作为参数调用库中的函数时,都需要用户将(本机)UTF-8 字符串转换为 std::wstring。

在 gcc/linux 上,std::wstring 的每个字符将有 4 个字节,而在 Windows 上将有 2 个字节。这可能会在读取或写入文件(以及从不同平台复制文件或将文件复制到不同平台)时导致奇怪的效果。我宁愿推荐 UTF-8/std::string 用于跨平台项目。