これらの2つのストリング・ストレージ形式に違いはありますか?"UTF-16"と "std :: wstring"の違いは何ですか?
答えて
std::wstring
は、wchar_t
のコンテナです。 wchar_t
のサイズは指定されていません - Windowsコンパイラは16ビットタイプのUnixコンパイラを使用する傾向があります。
UTF-16は、16ビット整数のシーケンスでUnicodeコードポイントのシーケンスをコード化する方法です。
BMPの外部に文字を含まないワイド文字リテラル(たとえばL"Hello World"
)を使用すると、Visual Studioを使用するとUTF-16になりますが、大部分は2つの概念には関係ありません。 BMP以外の文字を使用すると、std::wstring
はwchar_t
が16ビットであっても、surrogate pairsをUnicodeコードポイントに変換しません。
Windowsオペレーティングシステムで使用されている場合、std :: wstringはBMP以外のユニコード文字のUTF-16と同じであることを意味しますか? – hkBattousai
いいえ、std :: wstringは単なる整数のコンテナです。コンテナのエンコーディングは、コンテナに挿入するデータに完全に依存します。 –
+1:UTFに慣れていない人にとっては、BMPを定義することが賢明かもしれません。 –
UTF-16は、16バイトの要素で表されたテキストの概念であるが、実際のテキストの文字が1
要素よりもSTDから構成されてもよい:: wstringのは、これらの要素の単なる集合体であり、主にクラスでありますそれらの記憶に関係する。
wstringの要素wchar_tは少なくとも16ビットですが、32ビットにすることもできます。
例を挙げるともっと詳しく説明できますか?たとえば、文字 'A'は "0x0041"のようにstd :: wstringに格納されます。どのようにUTF-16形式で保存されますか? – hkBattousai
16 - **バイト**?それはハードコアの文字コード – Inverse
です@Inverse:誰もがASCIIを使用する必要がありますので、メモリの使用についてはあまり悲しんではありません;) –
UTF-16は、特定のUnicodeエンコーディングです。 std::wstring
は、各文字を格納する基本型としてwchar_t
を使用する文字列の実装です。対照的に、規則的なstd::string
はchar
を使用します。
で使用されるエンコーディングは、必ずしもUTF-16である必要はありません。たとえば、UTF-32でもかまいません。
また、UCS-2やS-JIS、Big 5などとすることもできます。 – greyfade
- 1. vC++のstd :: string/std :: wstringのマクロは何ですか? MSDNによると
- 2. std :: setとstd :: vectorの違いは何ですか?
- 3. std :: valarrayとstd :: arrayの違いは何ですか
- 4. std :: string :: c_strとstd :: string :: dataの違いは何ですか?
- 5. std :: tieとstd :: make_tupleのstd :: ref引数の違いは何ですか?
- 6. std :: condition_variableのnotify_all()とnotify_one()の違いは何ですか?
- 7. C++はstd :: stringからstd :: wstringへデータをコピーします
- 8. std :: string、wstring、u16/32string解説
- 9. std :: logical_notとstd :: not1の違いは?
- 10. std :: string&std :: wstringからchar整数値を取得する
- 11. はSTDを反復:リスト<wstring>
- 12. C++ 0xは、UTF-8バイトシーケンスとのstd :: wstring変換をサポートしていますか?
- 13. このSTDと何が間違っている:: STDをコンパイルするとき
- 14. Callable概念とstd :: is_function型形質の違いは何ですか?
- 15. std :: wstringの初期化と印刷方法は?
- 16. DLLにstd :: wstringを渡すことができません
- 17. UTF-8 std :: stringをUTF-16 std :: wstringに変換するにはどうすればよいですか?
- 18. std :: wstringとstd :: stringの間のUTF-8エンコード文字列の処理
- 19. std:stringとstd :: stringの違い
- 20. difftimeと ' - 'の違いは何ですか?
- 21. A`と ``の違いは何ですか[:] `
- 22. `&`と `ref`の違いは何ですか?
- 23. バックスティックと$()の違いは何ですか?
- 24. `##`と `hashCode`の違いは何ですか?
- 25. "$^N"と "$ +"の違いは何ですか?
- 26. #{} $ {}と%{}の違いは何ですか?
- 27. typedefとの違いは何ですか?
- 28. %Qと%{}の違いは何ですか?
- 29. `==`と `is`の違いは何ですか?
- 30. $と$$の違いは何ですか?
ここにこの質問に対するかなり良い答えがあります:http://stackoverflow.com/questions/402283/stdwstring-vs-stdstring/402918#402918 –