gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:33:14 27 4
gpt4 key购买 nike

我在网上看到的所有使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com