1

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

我希望能够采用以下格式字符串:
Hello {0}!您上次登录是在 {1,date:dd/mm/yy}。
...并输入变量“Fire Lancer”和 1247859223,最后得到以下格式化字符串:
Hello Fire Lancer!您上次登录时间是 2009 年 7 月 17 日。

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

这也是针对高性能程序的,所以无论我使用什么解决方案都需要解析格式字符串一次并存储它(例如,可能通过一个返回带有 Format(string) 方法的 FormatString 对象的 Parse 方法),而不是每次都重新解析字符串格式方法被称为...

4

3 回答 3

2

Boost Formatting 为您做到这一点:

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

查看此问题和答案以获取使用示例:

于 2009-07-17T19:42:05.270 回答
2

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

于 2009-07-17T19:58:43.720 回答
0

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

于 2009-07-17T19:41:41.713 回答