2

I am a little confused. pugi::xml_node::value() returns string of type chart_t, which can be either wchar_t or char depends on compilation flags. In documentation to pugiXML said that it works with different types on utf family encodings. OK. I am loading using pugi::xml_document::load_file() a document in uft16 encoding. Then when I am iterating throw nodes and calling value() method on every node, in which encoding I'll get value? Presumably in encoding of my data, which I've loaded to xml_document. This means in utf16. If it in utf16 then I'll can't to work with that value because there will be 0-symbols and I'll can't use strlen, strcpy an so on... I've made such test, but everything works fine. Anybody knows how it works?

4

2 に答える 2

2

コンパイルには 2 つのモードがあります。ドキュメントが UTF8 を使用してメモリ内データを char 配列に格納するデフォルトと、sizeof に応じて UTF16 または UTF32 のいずれかを使用してデータが wchar_t 配列に格納される wchar モード (PUGIXML_WCHAR_MODE) です。 (wchar_t)。

ドキュメントをロードまたは保存するとき、pugixml は入力データを自動的にデコードするか、ロード/保存関数の「encoding」引数で指定されたエンコーディングで出力データをエンコードします。

あなたの場合、pugixml は入力ファイルに UTF16 データが含まれていることを自動的に検出し、それを UTF8 にデコードします。これは value() から取得したものです。

于 2013-05-28T15:45:02.250 に答える
0

http://pugixml.googlecode.com/svn/tags/latest/docs/manual/loading.html

http://pugixml.googlecode.com/svn/tags/latest/docs/manual/loading.html#manual.loading.encoding

自分でエンコーディングを指定するか、自動検出されたエンコーディングを「楽しむ」ことができます。

于 2013-05-27T12:38:35.370 に答える