С++ RapidJSON addMember и RapidXML

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

Все работает нормально

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

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

/home/otf/test/./include/xml2json.hpp|210|ошибка: нет соответствующей функции для вызова 'rapidjson::GenericValue >::AddMember(std::string, std::string, rapidjson::GenericDocument > ::ТипРаспределителя&)'|


person user2942945    schedule 14.06.2016    source источник


Ответы (1)


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

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

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

person Altainia    schedule 14.06.2016