gpt4 book ai didi

c++ - 使用 printf 样式格式设置 std::string 的内容

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:05 25 4
gpt4 key购买 nike

<分区>

我想将使用 printf 类型格式化字符串格式化的文本放入 C++ 字符串中。我想出了以下方法,它似乎有效,但我还没有发现其他人承认使用类似的技术,所以我想我会问为什么我不应该这样做的原因。

#include <stdio.h>
#include <stdarg.h>
#include <string>

void stringprintf(std::string &str, char const *fmt, ...) {
va_list ap;

va_start(ap, fmt);
size_t n = vsnprintf(NULL, 0, fmt, ap);
str.resize(n + 1, '\0');
char *pStr = (char *)(str.c_str());
(void)vsnprintf(pStr, str.capacity(), fmt, ap);
va_end(ap);
}

void dumpstring(std::string &str) {
printf("Object: %08X, buffer: %08X, size: %d, capacity: %d\ncontents: %s==\n",
&str, str.c_str(), str.size(), str.capacity(), str.c_str());
}

int main(int argc, char **argv) {
std::string str;

dumpstring(str);
stringprintf(str, "A test format. A number %d, a string %s!\n", 12345, "abcdefg");
printf("%s", str.c_str());
dumpstring(str);
return 0;
}

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