gpt4 book ai didi

c++ - sprintf 直接到 std::string?

转载 作者:太空狗 更新时间:2023-10-29 20:06:15 61 4
gpt4 key购买 nike

我对使用 sprintf 的格式感兴趣(出于各种原因),结果在 std::string 对象中。我想到的语法上最直接的方法是:

char* buf;
sprintf(buf, ...);
std::string s(buf);

还有其他想法吗?

最佳答案

不要使用 printf 函数行在 C++ 中进行格式化。使用类型安全且不需要用户提供特殊格式字符的流(在本例中为字符串流)的语言功能。

如果您真的想要这样做,您可以在您的字符串中预先分配足够的空间,然后调整它的大小,尽管我不确定这是否比使用临时字符缓冲区更有效数组:

std::string foo;
foo.resize(max_length);
int num_bytes = snprintf(&foo[0], max_length, ...);
if(num_bytes < max_length)
{
foo.resize(num_bytes);
}

关于c++ - sprintf 直接到 std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749163/

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