TinyXMLを使用してXML ファイルを解析/構築しています。現在、ドキュメントによると、このライブラリは UTF-8 を介してマルチバイト文字セットをサポートしています。これまでのところとても良いと思います。ただし、ライブラリが提供する唯一の API (要素名、属性名、および値の取得/設定など、文字列が使用されるすべてのもの) はstd::string
or const char*
. これは、マルチバイト文字セットのサポートについての私自身の理解に疑問を投げかけています。8 ビット文字のみをサポートする文字列に 16 ビット文字を含めるにはどうすればよいでしょうか (「Unicode をサポートする」主張を否定するコード ページを使用しない限り)。理論的には 16 ビットのコード ポイントを取得して 2 文字に分割できることは理解していますが、それではstd::string
変換されません。std::string
「Unicode」文字列に変換すると、ほとんどの目的で無効になり、ファイルに書き込んで別のプログラムで読み込むと、誤って機能する可能性があります。
それで、誰かがライブラリが「8ビットインターフェース」(std::string
またはconst char*
)を提供し、「Unicode」文字列をサポートする方法を説明できますか?
(おそらく、ここで Unicode 用語をいくつか混同しました。そこから生じる混乱については申し訳ありません)。