5

現在、Windows で開発していますが、後でアプリケーションをクロス プラットフォームにしたいと考えています。GUIは必要ありません。

私は常に wstrings を使用していますが、それが最善の解決策になることを願っています。プロジェクト設定で「マルチバイト文字セット」を使用しています。

wstring は他のすべてのプラットフォームでもサポートされていますか?

4

2 に答える 2

5

が他のプラットフォームでサポートされている場合でもstd::wstring、その定義と意味はプラットフォームごとに異なるようです。たとえばwchar_t( a の基本的な「ビルディング ブロック」std::wstring)は、Windows では 2 バイトのサイズですが、Linux では 4 バイトです。

したがって、 Windowsstd::wstringでは Unicode 文字列をUTF-16形式 (Win32 API で使用される Unicode 形式でもあります) で格納するために使用できますが、Linuxstd::wstringでは Unicode UTF-32文字列を格納するために使用する必要があります。したがって、同じクラス ( std::wstring) が異なるプラットフォームで異なる意味を持つ場合、それを移植可能とは定義しません。

おそらく、移植可能なコードを書きたい場合は、 Unicode UTF-8std::stringテキストを使用して保存することを検討できます (実際には、Windows と Linux の両方で 1 バイトである に基づいています)。std::stringchar

または、新しい C++11 標準を使用できる場合は、 を検討することをお勧めしますstd::u16string。これは、 として定義されているため、非常に移植性が高く、basic_string<char16_t>あらゆるプラットフォームで Unicode UTF-16 テキストを曖昧さなく格納するために使用できます。

于 2013-04-13T10:56:38.727 に答える