1

当我调用一个接受 char* 的 tinyxml 函数时,我需要传递什么 unicode 格式?

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 编码)。因此,当我写出时,如果我将 notepad++ 设置为显示 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、运算符 << 和运算符 >>。许多 API 方法同时具有 'const char*' 和 'const std::string&' 形式。

编译出 STL 支持时,不会包含任何 STL 文件。所有的字符串类都是由 TinyXML 自己实现的。API 方法都使用“const char*”形式进行输入。

使用编译时定义 TIXML_USE_STL 来编译一个或另一个版本。这可以由编译器传递,或者设置为“tinyxml.h”的第一行。

于 2012-03-31T03:49:02.003 回答