Google의 ctemplate은 C++ 기반의 템플릿 엔진으로, 템플릿 파일과 데이터 딕셔너리를 활용하여 동적인 텍스트 출력을 생성합니다.
이를 통해 코드와 템플릿을 분리하여 유지보수성과 재사용성을 높일 수 있습니다.
사용 방법:
-
템플릿 파일 작성:
example.tpl
과 같은 템플릿 파일에 템플릿 요소를 정의합니다. 예를 들어:Hello {{NAME}}, You have just won ${{VALUE}}! {{#IN_CA}}Well, ${{TAXED_VALUE}}, after taxes.{{/IN_CA}}
여기서
{{NAME}}
,{{VALUE}}
는 템플릿 요소이며,{{#IN_CA}}...{{/IN_CA}}
는 조건부 섹션입니다.
-
딕셔너리 생성 및 값 설정: C++ 코드에서
ctemplate::TemplateDictionary
를 사용하여 딕셔너리를 생성하고, 템플릿 요소에 대응하는 값을 설정합니다.cpp
ctemplate::TemplateDictionary dict("example"); dict.SetValue("NAME", "John Smith"); int winnings = rand() % 100000; dict.SetIntValue("VALUE", winnings); dict.SetFormattedValue("TAXED_VALUE", "%.2f", winnings * 0.83); if (1) { dict.ShowSection("IN_CA"); }
여기서
SetValue
는 문자열 값을,SetIntValue
는 정수 값을,SetFormattedValue
는 포맷팅된 값을 설정합니다.ShowSection
은 조건부 섹션을 표시할지 여부를 결정합니다.
-
템플릿과 딕셔너리 결합:
ctemplate::Template
클래스를 사용하여 템플릿 파일을 로드하고,Expand
메서드를 통해 딕셔너리와 결합하여 최종 출력을 생성합니다.cpp
ctemplate::Template* tpl = ctemplate::Template::GetTemplate("example.tpl", ctemplate::DO_NOT_STRIP); std::string output; tpl->Expand(&output, &dict); std::cout << output;
이렇게 하면 템플릿 파일의 템플릿 요소들이 딕셔너리에서 설정한 값으로 치환되어 최종 결과가 출력됩니다.
결과 예시:
Hello John Smith,
You have just won $10000!
Well, $8300.00, after taxes.
이러한 방식으로 ctemplate을 활용하면 코드와 템플릿을 분리하여 유지보수성을 높이고, 다양한 출력 형식을 유연하게 생성할 수 있습니다.
'C C++' 카테고리의 다른 글
c++ std exception example (0) | 2010.05.04 |
---|---|
[CodeBlocks & wxPack] 손쉽게 Windows에서 wxWidgets(wxWindows) 개발 환경 구성하기 (3) | 2009.10.30 |
C++ 함수 가림 현상(name hiding)과 using 키워드 활용하기 (0) | 2009.03.08 |
GCC를 활용한 공유 라이브러리 생성 및 활용 방법 (0) | 2009.03.07 |
Windows XP 에서 Cygwin 구성 - (2) (0) | 2009.02.19 |