在 C++ 中格式化字符串与 Java 5 / 6 中的 String.format() 一样方便吗?
是否有一个通用函数可以执行 sprintf
类型字符串格式化,而无需提供固定大小的缓冲区,并返回 string
类实例?
我知道stringstream
它不能做我想要的事情,我不想像它所要求的那样对输出语句中标记的位置进行硬编码。
我想要能够定义像 sprintf
这样的模式,但没有 C 包袱,并且以更惯用的面向对象 C++ 方式。
也许某个函数可以使用 stringstream
执行 sprintf
的操作并生成 string
对象?类似于String.format() 在 Java 中执行,或在 Python 中执行等效的字符串格式化语法。
Is there a common function available to be able to do sprintf
type String formatting without having to supply a fixed size buffer, that returns a string
class instance?
I know about stringstream
it doesn't do what I want, I don't want to hard code the position of the tokens in the output statement like it requires.
I want to be able to define a pattern like sprintf
lets you, but without the C baggage and in a more idiomatic Object Oriented C++ manner.
Maybe some function that does what sprintf
does using a stringstream
and produces a string
object? Something along the line of the convenience of what String.format() does in Java or the equivalent String formatting syntax in Python.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Boost 格式库:
The Boost Format Library:
如果您不使用 Boost.Format 或 Boost.Locale,您可以使用我的简单 stringstream 包装器或进一步包装它:
fakeformat
示例:
Ideone
If you don't use Boost.Format or Boost.Locale you can use my simple stringstream wrapper or wrap it even further:
fakeformat
example:
Ideone