我目前正在 Windows 上开发,但我想稍后让我的应用程序跨平台。它没有/不需要 GUI。
我一直在使用 wstrings,希望这是最好的解决方案。我在项目设置中使用“多字节字符集”。
所有其他平台也支持 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::wstring
std::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
.