snprintf的用法

时间:2016-12-16 07:40:47

标签: c++ printf

不可能吗? 当我删除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());