のようなUnicode
を割り当てる方法をwchar_t
変数に割り当てる方法はありますか?wchar_t変数へのUnicodeの割り当て
0
A
答えて
0
wchar_t
Linuxでは32ビットですが、Windowsでは16ビット、UTF-16LEエンコーディング、場合によっては2つのUnicodeコードポイントを格納するwchar_tが必要になることがあります。
UTF-16LEとUTF-16BEは線形ではなく、2つの文字列で分割できないペアがあります。そして、wchar_tは移植性がありません。
したがって、UTF-8とchar
を使用する方が良いです。以下のようなWindowsの何かのワイド文字(UTF-16)については
void append_utf8(string& s, uint cp) {
if (cp < 0x80 && cp != 0) {
// Let encode U+0 too (Modified UTF-8), as non-terminator?
s.append(1, (char) cp);
} else {
char cpBytes[6];
int bi = 0;
int lastPrefix = 0xC0;
int lastMask = 0x1F;
for (;;) {
int b = 0x80 | (cp & 0x3F);
cpBytes[bi] = (char)b;
++bi;
cp >>= 6;
if ((cp & ~lastMask) == 0) {
cpBytes[bi] = (char) (lastPrefix | cp);
++bi;
break;
}
lastPrefix = 0x80 | (lastPrefix >> 1);
lastMask >>= 1;
}
while (bi > 0) {
--bi;
s.append(1, cpBytes[bi]);
}
}
}
string s;
append_utf8(s, 0x2191): // For U+2191 up arrow.
append_utf8(s, 0x1F913): // For U+01F913 emoji nerd face.
:
void append_wch(std::wstring& s, uint cp) {
if (cp < 0x10000) {
s.append(1, (wchar_t) cp);
} else {
cp -= 0x10000;
uint w = (cp >> 6) + 0xD800;
s.append(1, (wchar_t) w);
w = (cp & 0x3FF) + 0xDC00;
s.append(1, (wchar_t) w);
}
}
(。私は、Javaの影響で汚染されていますマインド)
+1
Windows APIはUTF-16なので、そのプラットフォームでUTF-8を使用するには余分な作業が必要です。 http://utf8everywhere.org/ –
+0
@MarkRansomはいWindowsのみのデスクトップ開発は、OPが望んでいるものかもしれません。ありがとう –
関連する問題
- 1. ダートの変数への関数/メソッドの割り当て
- 2. 関数へのPython変数の割り当て
- 3. 整数変数へのアドレスの割り当て
- 4. 変数の割り当て、解放、割り当て
- 5. PostgreSQLの変数への値の宣言と割り当て
- 6. 角2の結果へのクラス変数の割り当て
- 7. R:データフレームの要素の変数クラスへの割り当て
- 8. シェルコマンドの変数への出力の割り当て
- 9. 変数割り当て
- 10. 割り当て変数タグジャンゴ
- 11. [ベストプラクティス?]クラス全体への変数の割り当て
- 12. テナント変数の単一要素へのインデックス割り当て値
- 13. PHP変数へのHTMLの割り当て
- 14. PHP変数へのAjax応答の割り当て
- 15. C変数へのスウィート文字列リテラルの割り当て
- 16. グローバル変数へのd3.csv応答の割り当て
- 17. getUserMedia()から変数へのストリームの割り当て
- 18. PHP変数へのHTMLコンテンツの割り当て
- 19. Oracle SQL文からPHP変数への値の割り当て
- 20. php変数へのPHPファイル出力の割り当て/エコー
- 21. 変数への文字の割り当て
- 22. ハッシュから変数へのキーの割り当て
- 23. 変数へのGridviewチェックボックスの割り当てヘルプ
- 24. Powershellスクリプトの問題(Get-content vs変数への割り当て)
- 25. ポストフィックスインクリメントポインタへの割り当て
- 26. 複数の変数割り当て
- 27. AngularJS:Objectプロパティへの変数参照を割り当てます
- 28. Asp Password <input>フィールドと変数への割り当て
- 29. 親変数から子変数への子クラスのインスタンスの割り当て
- 30. Cuda char *変数の割り当て
'wchar_t型変数= L '\ u1234'; '(1234を目的のUnicodeコードポイントに置き換えます)。 –
@IgorTandetnikは絶対に正しいです、それを行うための唯一の確実な方法です。また、Unicodeのコードポイント値を見つける必要がある場合は、Googleにそれを伝えてください。例えば、ここに矢印のページがあります:https://en.wikipedia.org/wiki/Template:Unicode_chart_Arrows –
'wchar_t'が16であるため、charリテラルの直接割り当てはU + 10000以上のコードポイントに対してWindowsでは動作しません-ビット。このような場合、2つの 'wchar_t'を占めるサロゲートペアを使用する必要があります。 – Sergio