WXSTRING:是否有使用类似Python3的占位符实现字符串格式化的C/C 代码

wxString: Is there any C/C++ code that implements string formatting using Python3-like placeholders?

本文关键字:实现 占位符 字符串 格式化 代码 Python3 是否 WXSTRING      更新时间:2023-10-16

我正在使用wxwidgets重写我们的应用程序。目标之一是将我们的旧方法替换为本地化字符串。另一个可能的目标是将Python解释器嵌入到应用程序中 - 但后来才。无论如何,任何C/C 代码或能够使用Curly Braces的类似Python的字符串格式的库都是不错的。

如果您不知道Python,则是其格式函数的DOC。您可以在内部找到对格式规范小语言的引用,以及格式示例。文档中的一些提取物...(>>>是交互式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(映射)的字符串方法,而映射属于 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 代码,还是我必须写自己的?

感谢您的时间和经验,

petr

是。FMT库使用基于Python的str.format的格式字符串语法。它支持str.format的大多数格式选项,包括命名参数。这是一个例子:

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

免责声明:我是这个库的作者。