2016-06-14 5 views
1

은 내가 C++ 라이브러리 RapidJson에서 함수 AddMember를 사용하면 미세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-를 얻을 수> 이름() 나는 문자열

에 캐스팅 그 이유는, 숯불 *를 반환

/home/otf/test/./include/xml2json.hpp|210|error : 통화에 대해 일치하는 함수에 'rapidjson :: GenericValue> :: AddMember (

이 내가 오류 메시지입니다 std :: string, std :: string, rapidjson :: GenericDocument :: :: AllocatorType &) '|

답변

2

rapidjson 라이브러리의 GenericValue :: AddMember 메소드에는 첫 번째 매개 변수로 std :: basic_string을 허용하는 오버로드가 포함되어 있지 않습니다. 선택할 수있는 값은 GenericValue (문자열 자체 여야 함) 또는 GenericStringRef입니다. GenericStringRef는 const char *로부터 생성 될 수 있습니다. 그래서 초기 메소드가 작동하지만 std :: string을 통해 직접 생성 할 수 없습니다. 이 here

에 대한 문서를 찾을 수 있습니다, BTW

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

: 나는 당신이 당신의 코드를 다시 작성하는 것이 좋습니다