c ++ rapidjson addMember& rapidxml

时间:2016-06-14 17:06:51

标签: c++ casting rapidjson rapidxml

当我使用c ++库RapidJson中的AddMember函数时,我使用字符串作为参数

一切正常

jsvalue.AddMember("Fare", "0", allocator);

但是当我尝试使用RapidXml函数作为获取节点名称的参数时,我收到致命错误

std::cout << "name : " << xmlnode_chd->name() << " value : " << xmlnode_chd->first_node()->value() << std::endl;
jsvalue.AddMember(std::string(xmlnode_chd->name()), std::string(xmlnode_chd->first_node()->value()), allocator);

xmlnode_chd-&gt; name()返回一个char *,这就是为什么我将它转换为字符串

这是我收到的错误消息:

/ home / otf / test /./include/xml2json.hpp | 210 |错误:没有匹配函数来调用'rapidjson :: GenericValue&gt; :: AddMember(std :: string,std :: string,rapidjson) :: GenericDocument&gt; :: AllocatorType&amp;)'|

1 个答案:

答案 0 :(得分:2)

rapidjson库的GenericValue :: AddMember方法不包含接受std :: basic_string作为其第一个参数的重载。您的选择是GenericValue(必须是字符串本身)或GenericStringRef。 GenericStringRef可以从const char *构造,这就是你的初始方法有效的原因,但不能直接通过std :: string构造。我建议你将代码重写为:

jsvalue.AddMember(xmlnode_chd->name(), xmlnode_chd->first_node()->value(), allocator);

顺便说一下,您可以找到关于此here

的文档