WxString:有没有使用Python 3-占位符实现字符串格式化的C/C++代码?

2024-10-03 06:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用wxWidgets重写我们的应用程序。其中一个目标是取代我们对本地化字符串的旧方法。另一个可能的目标是将Python解释器嵌入到应用程序中,但只能在以后。无论如何,任何使用C++的代码或库都可以使用Python风格的字符串格式,使用卷轴括号。在

如果您不了解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)方法,其中映射是类似于^{的类型。例如,my_dictionary包含如下映射:

^{pr2}$

有一个如下所示的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++代码吗?或者我必须自己写?在

感谢您的时间和经验

彼得


Tags: 方法字符串代码应用程序formatmap目标dictionary
1条回答
网友
1楼 · 发布于 2024-10-03 06:21:11

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

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

免责声明:我是这个图书馆的作者。在

相关问题 更多 >