tmi*_*hty 5 c++ cross-platform wstring
我目前正在 Windows 上进行开发,但我想让我的应用程序稍后跨平台。它没有/不需要 GUI。
我一直在使用 wstrings,希望这是最好的解决方案。我在项目设置中使用“多字节字符集”。
所有其他平台也支持 wstring 吗?
即使std::wstring其他平台支持,其定义和含义似乎也因平台而异:例如wchar_t(a 的基本“构建块” std::wstring)在 Windows 上大小为 2 字节,而在 Linux 上大小为 4 字节。
因此,您可以在 Windows 上以UTF-16std::wstring格式存储 Unicode 字符串(这也是 Win32 API 使用的 Unicode 格式),但在 Linux 上,您应该用于存储 Unicode UTF-32字符串。所以,如果同一个类()在不同的平台上有不同的含义,我不会将其定义为可移植的。std::wstringstd::wstring
也许,如果您想编写可移植代码,您可以考虑使用std::string并在其中存储 Unicode UTF-8文本(事实上,std::string基于char,在 Windows 和 Linux 上都是 1 个字节)。
或者,如果您可以使用新的 C++11 标准,您可能需要考虑std::u16string,它确实是可移植的,因为它被定义为basic_string<char16_t>,因此它可以用于在每个平台上存储 Unicode UTF-16 文本,而不会产生歧义。
所有其他平台也支持 wstring 吗?
它应该是。std::wstring是 C++ 输入/输出标准库的一部分,因此标准库的任何符合标准的实现都必须提供它。
由于它是标准 C++,因此使用的程序std::wstring保证是可移植的 - 至少对于使用std::wstring.