作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
嗨我正在使用 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->name() 返回 pugi::char_t* 并且我需要将它转换成 std::string。是否可以 ??我在 pugixml 网站上找不到任何信息
最佳答案
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”文档的粗略浏览。
关于c++ - 如何将 pugi::char_t* 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6102698/
我是一名优秀的程序员,十分优秀!