C ++运行时字符串格式

时间:2009-07-17 19:39:43

标签: c++ stream string-formatting

通常我使用流来格式化东西,但在这种情况下?我不知道格式直到运行时。

我希望能够采用以下格式字符串:
你好{0}!您上次登录的时间是{1,日期:年/月/日} ...并输入变量“Fire Lancer”和1247859223,最后得到以下格式化字符串:
你好火枪骑兵!您的上次登录时间是17/07/09。

在其他语言中我使用内置支持这种东西,例如pythons格式字符串方法,但是在c ++中似乎没有任何这样的功能,接受不太安全的C打印方法。

这也适用于高性能程序,因此我使用的任何解决方案都需要解析格式字符串一次并存储它(例如,可以通过Parse方法返回带有Format(字符串)方法的FormatString对象),而不是重新解析每次调用format方法时都会串起来......

3 个答案:

答案 0 :(得分:2)

Boost Formatting为您做到了这一点:

http://www.boost.org/doc/libs/1_39_0/libs/format/doc/format.html

查看此question and answer以了解使用示例:

答案 1 :(得分:2)

您的格式字符串与ICU MessageFormat中的字符串非常相似。你考虑过使用它吗?

答案 2 :(得分:0)

boost::format将执行位置参数部分,但不会执行日期格式化...