【发布时间】:2016-10-05 11:00:49
【问题描述】:
我目前正在学习 C++,但我找不到如何使用格式化程序创建一个字符串以获取多个参数,例如使用 sprintf 但字符串长度未知。
我想要做的是类似的事情
string myString = string.format("Hello, here is %s %s and another %s", par1, par2, par3);
我知道在 C 中有 asprintf 函数,它可以计算字符串的长度,它是 malloc 的内存,完成后您需要释放它,但是,这似乎不适用于 C++,尽管sprintf 是。我在谷歌上看到的关于 asprintf 的一切似乎主要集中在 Linux 上,而我需要跨平台。
我所看到的关于 C++ 和字符串格式化的所有内容都需要定义一个固定长度的 char 数组并使用 sprintf,但我不知道字符串的长度,所以我不能这样做。
【问题讨论】:
-
Boost 有这样的东西,但标准 C++ 没有。但是,您可以使用
operator +连接字符串(std::strings,即不是旧的字符串文字)。 -
您现在应该已经遇到了
<<运算符。<<用于格式化任意大小和参数的字符串。 -
使用
std::ostringstream。 -
看看这个答案是否有帮助stackoverflow.com/questions/12233710/…
-
@BaummitAugen 我看到很多东西都提到了 boost,这是推荐用于 C++ 开发的东西