c++ - 需要在没有预定义缓冲区大小的情况下在 C++ 中构建字符串

标签 c++ arrays

我在网上看到的所有使用 sprintf 创建字符串的示例都使用静态声明的数组,其大小是固定的。

#include <stdio.h>
#include <math.h>

int main()
{
   char str[80];

   sprintf(str, "Value of Pi = %f", M_PI);
   puts(str);

   return(0);
}

我希望能够以最简单的方式对动态大小的数组执行此操作。 我必须编写一些代码来打印组成数组的值:

    printf("id=%s %s-array is: ", id.value(), name);
    for (unsigned int i = 0; i < depths.size(); i++) {
        printf("%f,", depths[i]);
    }
    printf("\n");

但我不想使用单独的 printfs 来执行此操作。我希望能够将其全部放入适合我在运行时写入的字符串的缓冲区中。我倾向于认为 sprintf 是执行此操作的最佳方法,但如果有其他函数我可以在 C++ 中使用。让我知道。

最佳答案

惯用的 C++ 方式(正如@Troy 指出的那样)是使用字符串流:

#include <cmath>
#include <iostream>
#include <sstream>
#include <string>

int main()
{
   std::ostringstream ss;
   ss << "Value of Pi = " << M_PI;

   std::string str = ss.str();

   std::cout << str << '\n';

   return(0);
}

关于c++ - 需要在没有预定义缓冲区大小的情况下在 C++ 中构建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19169527/

相关文章:

c++ - 将 Scala 转换为 C++ - 将列表转换为 vector

php - MySQL 按行中数组的第一个元素排序

JavaScript : Split string using function and returning it

javascript - 无法找到子数组中最大的数字

c++ - 将字符串转换为整数数组?

c++ - 使用 fstream 查看空格分隔文件中的下一项(不仅仅是一个字符)的方法

c++ - 交换链表中的相邻节点(迭代方法)

c++ - MinGW: "gcc is not recognized as an internal or external command"

php - 检测多维数组中的新排列

python - 如何快速找到 2 个不同数组中所有元素对的总和