2016-06-14 1298 views
1

當我使用功能使用addMember從C++庫RapidJson我用字符串作爲參數C++ rapidjson使用addMember&rapidxml

一切做工精細

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->名稱()返回一個char *,這就是爲什麼我把它轉換爲字符串

這是錯誤消息我得到:

/home/otf/test/./include/xml2json.hpp|210|error:呼叫沒有匹配功能「rapidjson ::在minilang> ::使用addMember( std :: string,std :: string,rapidjson :: GenericDocument> :: AllocatorType &)'|

回答

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

文檔