我正在使用 wxWidgets 重写我们的应用程序。目标之一是替换我们对本地化字符串的旧方法。另一个可能的目标是将 Python 解释器嵌入到应用程序中——但只是在以后。无论如何,任何能够使用花括号进行类似 Python 的字符串格式化的 C/C++ 代码或库都会很好。
如果您不了解 Python,这里是其格式功能的文档。您可以在里面找到对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++ 代码能够做到这一点,还是我必须自己编写?
感谢您的时间和经验,
彼得