私はこれに対する答えを見つけるためにstackoverflowを検索しようとしましたが、私が見つけた質問と答えは約10歳であり、私はそうは思えません変更および可能な進歩のために主題のコンセンサスを見つけます。
ユニコードを処理することになっているstl以外にも、いくつかのライブラリがあります。
Stlにはいくつかの機能( wstring 、 codecvt_utf8 )が含まれていましたが、このサイトはUTF-16を扱っているため、人々は使用について曖昧なようです:( tf-8 everywhere )は使用すべきではなく、オンラインの多くの人がこの前提に同意しているようです.
私が探している唯一のものは、ユニコード文字列で4つのことをする能力です-
Icuがこれ以上のことを処理していると言えます。私が知りたいのは、Linux、Windows、およびMacOSでこれを処理する標準的な方法があるかどうかです。
お時間をいただきありがとうございます。
ここでいくつかのアイデアを投げようとします:
basic Multilingual Plane(16ビットコードポイント)から出ると、事態はますます複雑になります。 emoji は特に処理がひどい:絵文字の後にvariation selector(U + FE0E VARIATION SELECTOR-15(VS15)for textまたはU + FE0F VARIATION SELECTOR-16(VS16)for emoji-style)その表示スタイルを変更します。多かれ少なかれ古いi bs ^
1970年のASCIIで印刷したいときに使用されたî
。それだけではありません。U+ 1F3FBからU + 1F3FFまでの文字は、6つのブロックにまたがる102の人間の絵文字の肌の色を提供するために使用されます。シンボル。
これは、最大3つの連続したUnicodeコードポイントが1つの単一のグリフを表すことができることを意味します... 1つの文字が1つの文字であるという考えはchar32_t
はまだ近似値です
私の結論は、ユニコードは複雑なものであり、実際にはICUのような専用ライブラリが必要だということです。 BMPのみを扱う場合は、標準ライブラリのコンバーターのような単純なツールを使用することができますが、完全なサポートはそれをはるかに超えています。
ところで:PythonのようなネイティブなUnicodeサポート(現在のC++のものよりもはるかに優れている)ふりをする)のような他の言語でさえ、いくつかの部分で失敗します:
したがって、Unicodeのサポートは10年以上にわたって貧弱であり、今後10年で事態がさらに良くなることを期待していません...