不可能吗?
当我删除d [%s]时,它没关系。
你能解释一下原因吗?
std::string toString() const {
char buf[1024];
int a, b, c;
std::string d;
snprintf(buf, 1024, "a[%d] b[%d]" "c[%d] d[%s]", a, b, c, d);
return buf;
}
1 个答案:
答案 0 :(得分:2)
snprintf
不适用于std::string
。 %s
修饰符指定如下:
参数必须是指向字符数组的初始元素的指针。 [...]
您需要传递以null结尾的字符数组。幸运的是,您可以使用std::string
中的c_str
来获取此类指针。
只需将您的代码更改为:
snprintf(buf, 1024, "a[%d] b[%d]" "c[%d] d[%s]", a, b, c, d.c_str());