您好 我正在使用pugixml来处理xml文档。我使用这种结构迭代节点
pugi::xml_node tools = doc.child("settings");
//[code_traverse_iter
for (pugi::xml_node_iterator it = tools.begin(); it != tools.end(); ++it)
{
//std::cout << "Tool:";
cout <<it->name();
}
问题是it-&gt; name()返回pugi :: char_t *,我需要将其转换为std :: string。可能吗 ??我在pugixml网站上找不到任何信息
答案 0 :(得分:0)
According to the manual,pugi::char_t
可以是char
或wchar_t
,具体取决于您的图书馆配置。这样您就可以在单个字节(ASCII或UTF-8)和双字节(通常是UTF-16/32)之间切换。
这意味着您无需将其更改为任何内容。但是,如果您使用wchar_t*
变体,则必须使用匹配的流对象:
#ifdef PUGIXML_WCHAR_MODE
std::wcout << it->name();
#else
std::cout << it->name();
#endif
而且,既然你问过,要从中构建一个std::string
或std::wstring
:
#ifdef PUGIXML_WCHAR_MODE
std::wstring str = it->name();
#else
std::string str = it->name();
#endif
或者,总是std::string
(这很少是你想要的!):
#ifdef PUGIXML_WCHAR_MODE
std::string str = as_utf8(it->name());
#else
std::string str = it->name();
#endif
希望这有帮助。
来源:粗略地浏览一下“pugixml”文档。
答案 1 :(得分:0)
你也可以使用 stringstream,
std::stringstream ss;
ss << it->name();
std::string strValue = ss.str();
ps:不要忘记包含
#include <sstream>