gpt4 book ai didi

由 c++ rapidjson addMember & rapidxml

转载 作者:行者123 更新时间:2023-11-30 03:40:46 25 4
gpt4 key购买 nike

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

一切正常

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

但是当我尝试使用 RapidXml 的函数作为参数来获取节点名称时,出现 fatal error

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->name() 返回一个 char*,这就是我将其转换为字符串的原因

这是我收到的错误信息:

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

最佳答案

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 上找到文档

关于由 c++ rapidjson addMember & rapidxml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37818181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com