2012-12-20 1 views
3

wxWidgets을 사용하여 응용 프로그램을 다시 작성합니다. 목표 중 하나는 이전 방식을 현지화 된 문자열로 대체하는 것입니다. 또 다른 가능한 목표는 Python 인터프리터를 응용 프로그램에 포함시키는 것입니다. 어쨌든 중괄호를 사용하는 파이썬과 같은 문자열 형식을 사용할 수있는 C/C++ 코드 나 라이브러리가 좋을 것입니다.wxString : Python3과 같은 자리 표시자를 사용하여 문자열 서식을 구현하는 C/C++ 코드가 있습니까?

파이썬을 모른다면 다음은 format 함수의 문서입니다. Format Specification Mini-Language 내부 및 Format examples에 대한 참조를 찾을 수 있습니다. 해당 문서의 일부 추출물 ...합니다 (>>> 대화 형 파이썬 모드의 프롬프트, 아래 라인이 호출의 결과를 보여줍니다 파이썬은 문자열 구분 기호로 작은 따옴표 나 큰 따옴표를 사용합니다.) :

>>> '{0}, {1}, {2}'.format('a', 'b', 'c') 
'a, b, c' 
>>> '{}, {}, {}'.format('a', 'b', 'c') # 3.1+ only 
'a, b, c' 
>>> '{2}, {1}, {0}'.format('a', 'b', 'c') 
'c, b, a' 
>>> '{0}{1}{0}'.format('abra', 'cad') # arguments' indices can be repeated 
'abracadabra' 

I (숫자 인덱스 대신) 명명 된 자리 표시자를 사용하여 파이썬 포맷을 사용하고 싶습니다. 파이썬에서 매핑map<string, some_type> 유형 인 경우 str.format_map(mapping) 문자열 방법이 사용됩니다. 말, my_dictionary에 포함 된 매핑과 같은 :

"name" --> "Guido" 
"country" --> "Netherlands" 

아래 같은 template 문자열을 갖는, 나는 result ...

wxString template("{name} was born in {country}."); 
wxString result(format_map(s, my_dictionary)); 

// the result should contain... 
// "Guido was born in Netherlands." 

은 당신이 할 수있는 모든 사용 가능한 C 또는 C++ 코드를 알고 계십니까 좀하고 싶습니다 , 또는 나는 나 자신을 써야합니까? 시간과 경험을

감사합니다,

페트르

+1

boost :: format은 python 형식 함수와 같습니다. http://liveworkspace.org/code/1zVEyV$0 – ForEveR

+0

글쎄, 이것은 비슷합니다 - 더 오래된 파이썬 방식과 비슷합니다. 파이썬 3 이상의 새로운 마커는 약간 다릅니다. 하지만 어쨌든 힌트 (+1)에 감사드립니다. – pepr

답변

4

예. The fmt library은 파이썬의 str.format에 기반한 포맷 문자열 구문을 사용합니다. 명명 된 인수를 포함하여 str.format의 대부분의 서식 옵션을 지원합니다. 다음은 그 예입니다.

std::string s = fmt::format("{0}{1}{0}", "abra", "cad"); 
// s == "abracadabra" 

면책 조항 : 본인은이 도서관의 저자입니다.

+0

잘 알고 있습니다! 감사. – pepr

관련 문제