C++ 运行时字符串格式化

标签 c++ stream string-formatting

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

我希望能够采用类似于以下格式字符串的内容:
你好{0}!您上次登录是在 {1,date:dd/mm/yy}。
...并输入变量“Fire Lancer”和 1247859223,最后得到以下格式化字符串:
你好火枪兵!您最后一次登录是在 17/07/09。

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

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

最佳答案

您的格式字符串看起来非常像 ICU MessageFormat 中使用的格式字符串.您考虑过使用它吗?

关于C++ 运行时字符串格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145273/

相关文章:

c++ - 如何在C++中实现更有效的文件编写?线程,缓冲区,内存映射文件?

linux - 拦截输入设备发送的数据

java - 我们可以提高 java 8 并行流以外的列表的性能吗

node.js - 将麦克风输入流式传输到 Google Speech API

WPF XAML StringFormat : Culture Workaround broken in C# 4. 0?

java - 根据规则解析字符串内容的库

c++ - 为比特币交易所构建订单簿表示

c++ - 在 matlab 中调用可执行函数,比本地 matlab 代码慢?

c++ - 在哪种情况下,我们在 C 中只定义枚举中的一个成员?

c - printf() var-arg 引用如何与堆栈内存布局交互?