wxWidgets を使用してアプリケーションを書き直しています。目標の 1 つは、ローカライズされた文字列に対する古いアプローチを置き換えることです。もう 1 つの考えられる目標は、Python インタープリターをアプリケーションに埋め込むことですが、それは後で行います。とにかく、中かっこを使用する Python のような文字列の書式設定が可能な C/C++ コードまたはライブラリがあれば便利です。
Python を知らない場合は、ここにそのformat関数のドキュメントがあります。内部のFormat Specification Mini-Languageへの参照と、 Format examplesを見つけることができます。ドキュメントからの抜粋... (これ>>>
はインタラクティブな Python モードのプロンプトです。以下の行は、呼び出しの結果を示しています。Python は、文字列区切り文字として一重引用符または二重引用符を使用します):
>>> '{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'
また、(数値インデックスの代わりに) 名前付きプレースホルダーで Python 書式設定を使用したいと思います。Python では、文字列のstr.format_map( mapping )メソッドが、マッピングがmap<string, some_type>
類似の型である場合に使用されます。たとえば、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++ コードを知っていますか、それとも自分で作成する必要がありますか?
あなたの時間と経験をありがとう、
ペトル