2016-06-14 2 views
1

Когда я использую функцию AddMember из C++ библиотеки RapidJson и я использую строку в качестве параметровC++ rapidjson addMember & rapidxml

Everything Работы тонкой

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-> имя() возвращает символ *, поэтому я бросил его в строку

Это сообщение об ошибке я получаю:

/home/otf/test/./include/xml2json.hpp|210|error: нет функции согласования для вызова «rapidjson :: GenericValue> :: AddMember (std :: string, std :: string, rapidjson :: GenericDocument> :: AllocatorType &) '|

ответ

2

Метод GenericValue :: AddMember библиотеки quickjson не содержит перегрузки, которая принимает в качестве первого параметра std :: basic_string. Ваш выбор - GenericValue (который должен быть самой строкой) или GenericStringRef. GenericStringRef можно построить из const char *, поэтому ваш исходный метод работал, но не может быть сконструирован напрямую через std :: string. Я рекомендую вам переписать код:

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

Кстати, вы можете найти в документации по этому here

 Смежные вопросы

  • Нет связанных вопросов^_^