wstringとstringの違いは何ですか
What Is Difference Between Wstring
中国では、wstringは主に漢字のために存在します。
typedef basic_string string typedef basic_string wstring
違いはcharまたはwchar_tにあります#ifndef _WCHAR_T_DEFINED typedef unsigned short wchar_t #define _WCHAR_T_DEFINED #endif
したがって、wchar_tは基本的にunsigned shortで、サイズは2バイト、つまり16ビットです。 通常ASCIIエンコーディングに対応するために使用される狭い文字(1単位と1文字)ワイド文字(一般にUNICODEエンコーディングに対応するために使用される)、1ユニットに2文字
つまり、ワイド文字の場合、各文字は16ビット、つまり2文字のサイズを表します。漢字を表現するには16ビットが必要です。
以下はテスト例です:
string s = 'Hello!' cout << s[1] << endl
出力は「良好」だと思いますが、実際には文字化けしています。正しい出力方法は次のとおりですstring s = 'Hello!' cout << s[2] << s[3] << endl
wstringを使用すると、string wcout.imbue(std::locale('chs')) wstring ws = L 'Hello!' wcout << ws[1] << endl
のような漢字を出力できます。