파일 이름을 키로 사용하여 속성 트리를 부스트하십시오
-
21-09-2019 - |
문제
파일 이름을 키로 사용하려고합니다. 부스트 :: PropertyTree
그러나, 그 '.' "example.txt"와 같은 파일 이름의 문자는 속성 트리 내에 추가 레이어가 추가됩니다. 가장 분명한 해결책은 ''를 대체하는 것입니다. 다른 캐릭터와 함께, 그러나 탈출 캐릭터와 같은 더 나은 방법이있을 것입니다.
다음 예에서는 값 10이 '예제'의 자녀 인 노드 'txt'에 넣습니다. 대신, 값 10이 노드 'example.txt'에 저장되기를 원합니다.
ptree pt;
pt.put("example.txt", 10);
단일 노드에 전체 파일 이름을 어떻게 사용하려면?
도와 주셔서 미리 감사드립니다!
해결책 2
문제는 문서가 구식 이었다는 것입니다. 경로 유형 객체는 다음과 같이 생성해야하며, 다른 문자는 다음과 같이 구분자로 지정된 파일 경로에 대해 유효하지 않습니다.
pt.put(boost::property_tree::ptree::path_type("example.txt", '|'), 10);
나는 NewsGroup gmane.comp.lib.boost.devel의 Boost Mailing List에서 솔루션의 경로를 찾았습니다. Philippe Vaucher.
다른 팁
나무를 명시 적으로 삽입하기 만하면됩니다.
pt.push_back(ptree::value_type("example.txt", ptree(10)));
그만큼 put
방법은 편의를 위해 단순히 거기에 있으므로 자동으로 구문 분석하는 이유입니다. .
추가 레이어로. 위에서 보여준 것처럼 value_type를 명시 적으로 구성하면이 문제를 피하십시오.
문제를 해결하는 대안적인 방법은 추가 인수를 사용하는 것입니다. put
그리고 get
, 구분 제를 변경합니다.
pt.put('/', "example.txt", "10");
pt.get<string>('/', "example.txt");
기록을 위해, 나는 내 인생 에서이 수업을 본 적이 없다. 나는 당신이 링크 한 페이지에서 바로이 모든 정보를 얻었습니다. )