現在、Windows で開発していますが、後でアプリケーションをクロス プラットフォームにしたいと考えています。GUIは必要ありません。
私は常に wstrings を使用していますが、それが最善の解決策になることを願っています。プロジェクト設定で「マルチバイト文字セット」を使用しています。
wstring は他のすべてのプラットフォームでもサポートされていますか?
現在、Windows で開発していますが、後でアプリケーションをクロス プラットフォームにしたいと考えています。GUIは必要ありません。
私は常に wstrings を使用していますが、それが最善の解決策になることを願っています。プロジェクト設定で「マルチバイト文字セット」を使用しています。
wstring は他のすべてのプラットフォームでもサポートされていますか?
が他のプラットフォームでサポートされている場合でも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::string
char
または、新しい C++11 標準を使用できる場合は、 を検討することをお勧めしますstd::u16string
。これは、 として定義されているため、非常に移植性が高く、basic_string<char16_t>
あらゆるプラットフォームで Unicode UTF-16 テキストを曖昧さなく格納するために使用できます。