1

char *を受け取るtinyxml関数を呼び出すとき、どのユニコード形式を渡す必要がありますか?

TiXmlText *element_text = new TiXmlText(string);

その理由は、私がwxStringオブジェクトを使用していて、それに与えることができるさまざまなエンコーディングがたくさんあるためです。string.c_str()を実行すると、wxstringオブジェクトは現在のロケールのエンコーディングを照会し、その形式でchar*文字列を作成します。または、string.utf8_str()を実行すると、utf-8文字列が渡されますが、tinyxmlはutf-8が既にエンコードされていることを認識せず、utf-8文字列をutf-8として再エンコードするようです(はい、結果はダブルutf-8エンコーディング)。したがって、書き出すときに、メモ帳++をutf-8を表示するように設定すると、次のようになります。

bağlamの代わりにbaÄŸlam。

自分でutf_8(string.utf8_str())にエンコードし、tinyxmlに触れさせずに書き出すようにしたいと思います。

どうすればよいですか?tinyxmlは関数パラメーター(上記のコードのコンストラクター)でどのような形式が渡されると予想しますか?テストからの答えはutf-8ではありませんが、それが理にかなっている場合は、最終的にutf-8として書き出されます。

4

2 に答える 2

1

TinyXMLはUTF-8エンコーディングのみをサポートします。したがって、ASCII以外の文字を提供する場合は、UTF-8で提供する必要があります。

于 2012-03-31T06:35:49.533 に答える
0

http://www.grinninglizard.com/tinyxmldocs/index.htmlでこのセクションを確認することをお勧めします

TinyXMLは、STLを使用する場合と使用しない場合でコンパイルできます。STLを使用する場合、TinyXMLはstd :: stringクラスを使用し、std :: istream、std :: ostream、operator <<、およびoperator>>を完全にサポートします。多くのAPIメソッドには、「constchar*」と「conststd:: string&」の両方の形式があります。

STLサポートがコンパイルされると、STLファイルは一切含まれません。すべての文字列クラスは、TinyXML自体によって実装されます。APIメソッドはすべて、入力に「constchar*」形式を使用します。

コンパイル時の定義TIXML_USE_STLを使用して、いずれかのバージョンをコンパイルします。これはコンパイラによって渡されるか、「tinyxml.h」の最初の行として設定できます。

于 2012-03-31T03:49:02.003 に答える