0

如何创建类似于 snprintf 的消息(我可以在其中使用 %d 表示整数的通用文本,并且仅当我需要在 sprintf 中显示连接参数时)以避免串联?(我需要创建类似You need more %d coins的结果字符串,目前我正在以不好的方式连接和返回值 'You need more' + some_stringified_value + 'coins'

4

2 回答 2

6

“规范” C++ 方式是使用stringstream,如下所示:

std::string somefunc(int number)
{
  std::stringstream ss;
  ss << "You need " << number << " more coins";
  std::string str = ss.str();
  return str;
}
于 2013-08-07T13:07:18.270 回答
1

也可以在 C++ 中使用snprintf :

int snprintf ( char * s, size_t n, const char * format, ... );

例如(来自上述链接):

/* snprintf example */
#include <stdio.h>

int main ()
{
  char buffer [100];
  int cx;

  cx = snprintf ( buffer, 100, "The half of %d is %d", 60, 60/2 );

  snprintf ( buffer+cx, 100-cx, ", and the half of that is %d.", 60/2/2 );

  puts (buffer);

  return 0;
}

输出:

The half of 60 is 30, and the half of that is 15.
于 2013-08-07T13:12:22.143 回答