2012-03-31 6 views
1

char *をとるtinyxml関数を呼び出すと、それを渡す必要があるユニコード形式は何ですか?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として出力します。

答えて

1

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

+0

これは、tinyxmlがutf-8を書き出すと言うだけです。関数が何を受け入れるかは言いません。テストから、utf-8でエンコードされたchar *を関数に渡すことはできません。 – hd112

+0

@ hd112:どのように動作しませんか? –

+0

TiXmlTextオブジェクトにλlamをutf-8(c4 9f 6c 61 6d)として渡すと、その値は(c3 84 c5 b8 6c 61 6d)としてファイルに書き出されます。したがって、tinyxmlはそれを間違って変換しているので、別の形式でそれを必要としているはずです。どのようなフォーマットですか? – hd112

0

あなたは使用するか、STLを使用しないようにコンパイルすることができhttp://www.grinninglizard.com/tinyxmldocs/index.html

TinyXMLに、このセクションを見てみたいことがあります。 STLを使用する場合、TinyXMLはstd :: stringクラスを使用し、std :: istream、std :: ostream、演算子< <、演算子>>を完全にサポートします。多くのAPIメソッドには、 'const char *'と 'const std :: string &'の両方のフォームがあります。

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

コンパイル時にTIXML_USE_STLを定義して、あるバージョンをコンパイルします。これはコンパイラによって渡されるか、 "tinyxml.h"の最初の行に設定されます。

関連する問題