2010-07-24 8 views
4

내가 (다른 샘플로, 또는 INI 파일)를 메모리-XML 파일의 표현처럼 행동 할 몇 가지 간단하고 효율적인 매개 변수 컨테이너를 찾고 있어요.C++ - 매개 변수 질문

기본적으로 섹션과 각 섹션에 대한 매개 변수 집합을 저장할 수 있으며 GetValue("ParameterName") 같은 간단한 접근 자 및 간단한 반환 값 캐스팅이 있습니다.

직렬화 가능하면 좋을 것입니다.

나는 어제와 비슷한 글을 썼다. 내 요구에 잘 어울리지 만, 더 편리하고 융통성있는 것이 있을까?

어떤 종류의 매개 변수지도가 boost일까요?

답변

8

boost::program_options을 살펴보십시오. INI 파일 구문 분석, 환경 변수 구문 분석, 명령 줄 옵션 구문 분석 및 확장 성 등 원하는 작업을 수행합니다.

4

당신이 std::map<>을 생각 해 봤나 감사?

+0

을 지금 : 또한 사용하여 새 값을 삽입 할 수 있습니다

std::string value = pt.get<std::string>("debug.filename"); 

을 'boost :: unordered_map' 주위를 쉽게 전환 할 수있는'std :: map' (여전히 해시 기반 구조를 정말 좋아합니다 :) 그러나'boost'와 다른 템플릿 라이브러리는 실제로 어떤 문제에 대한 해결책으로 알려져 있습니다. , 나는 더 편리한 무엇인가 존재할지도 모른다라고 생각했다. ... –

+0

Consideri 그는 std :: map을 사용할 것인데, 어떻게 직렬화하는 것이 가장 간단한 방법 일까? – Vargas

+0

@Vargas **'boost :: serialize', 의심 스럽습니다. ** 제 경우에는'boost :: unordered_map'에 대한 커스텀 직렬화 루틴을 작성해야했습니다. 처음에는 그렇게 힘들지는 않습니다. :) –

2

돈이 과잉이거나 그렇지 않은 경우 Dunno이지만, MUSCLE의 Message class은 위에 나열한 모든 것을 수행합니다. 이를 사용하여 모든 종류의 데이터 (구조화 된 데이터 든 아니든)를 serialize하거나 구문 분석 된 .ini 스타일 구성 파일의 메모리 내 컨테이너로 ParseFile()/UnparseFile()을 통해 사용할 수 있습니다.

1

Boost.PropertyTree을 사용할 수 있습니다.

xml 및 ini 파일을 읽고 씁니다.

그것은 나무로 매개 변수를 저장하고이 값에 액세스 할 점 표기법을 사용할 수 있습니다 : 나는 래퍼를 사용하고

pt.put("debug.filename", fileName);