5

我目前正在 Windows 上开发,但我想稍后让我的应用程序跨平台。它没有/不需要 GUI。

我一直在使用 wstrings,希望这是最好的解决方案。我在项目设置中使用“多字节字符集”。

所有其他平台也支持 wstring 吗?

4

2 回答 2

5

即使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 文本,没有歧义。

于 2013-04-13T10:56:38.727 回答
1

所有其他平台也支持 wstring 吗?

它应该是。std::wstring是 C++ 输入/输出标准库的一部分,因此标准库的任何符合要求的实现都必须提供它。

由于它是标准 C++,std::wstring因此可以保证使用的程序是可移植的——至少对于std::wstring.

于 2013-04-13T10:30:49.997 回答