在 C++ 中格式化字符串与 Java 5 / 6 中的 String.format() 一样方便吗?

发布于 2024-11-25 15:03:05 字数 603 浏览 3 评论 0原文

是否有一个通用函数可以执行 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱人如己 2024-12-02 15:03:05

Boost 格式库

格式类以类型安全的方式提供类似 printf 的格式,允许输出用户定义的类型。< /p>

The Boost Format Library:

The <boost/format.hpp> format class provides printf-like formatting, in a type-safe manner which allows output of user-defined types.

你在我安 2024-12-02 15:03:05

如果您不使用 Boost.Format 或 Boost.Locale,您可以使用我的简单 stringstream 包装器或进一步包装它:

fakeformat

示例:

REQUIRE( ff::format("{2}ff{1}").with('a').also_with(7).now()=="7ffa" );

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:

REQUIRE( ff::format("{2}ff{1}").with('a').also_with(7).now()=="7ffa" );

Ideone

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文