当我使用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;)'|
答案 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
的文档