문제

파일 이름을 키로 사용하려고합니다. 부스트 :: 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");

기록을 위해, 나는 내 인생 에서이 수업을 본 적이 없다. 나는 당신이 링크 한 페이지에서 바로이 모든 정보를 얻었습니다. )

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top