【发布时间】:2016-05-09 06:31:12
【问题描述】:
我正在使用 c++ 11。我想编写一个函数来获取格式化字符串和 args(不知道有多少,需要可变参数)并返回完整的字符串。
例如:
format = "TimeStampRecord Type=%u Version=%u OptimizeBlockID=%u WriteBlockID=%u Timestamp=%lu"
INDEX_RECORD_TYPE_TIMESTAMP = 3;
FORAMT_VERSION = 1;
optimizeBlockId = 549;
writeBlockId = 4294967295;
timestamp = 1668;
返回值是一个字符串,如下所示:
"TimeStampRecord Type=3 Version=1 OptimizeBlockID=549 WriteBlockID=4294967295 Timestamp=1668"
有什么有效的方法吗?
【问题讨论】:
-
什么,你的意思是
std::snprintf? -
@Joachim Pileborg 我不知道缓冲区的大小
-
你知道格式的长度,你知道参数的数量和类型。这意味着您可以轻松地创建一个
std::string对象,该对象具有足够的空间来容纳参数的最大值,并将其用作调用snprintf的目标。