我想知道Boost.Format是否支持使用固定宽度/预分配的缓冲区作为输出而不是由 lib 本身管理的动态缓冲区?
也就是说,通常你会这样做:
boost::format myfmt("arg1: %1% / arg2: %2%");
// e.g.:
cout << (myfmt % 3.14 % 42);
// or
string s = boost::str( myfmt % "hey!" % "there!");
因此 Boost:Format 库会自动为您分配足够的空间并管理“输出缓冲区”。
我想知道是否有任何方法可以将预定义的非动态缓冲区与 Boost.Format 一起使用,也就是说,类似于:
const size_t buf_sz = 512;
char big_enough[buf_sz];
boost::format myfmt("arg1: %1% / arg2: %2%");
myfmt.attach_buffer(big_enough, buf_sz);
myfmt % "hey!" % "there!"
// big_enough buffer now contains the result string
我知道我可以筛选示例、文档和源代码,但除了缺乏时间 atm。(以及遗漏某些东西的可能性)知道会很有趣: 如果不可能,如果有人能解释为什么(如果有/有具体的原因),那就太好了——这是故意的吗?它与 API 不匹配吗?...?
免责声明: 这个问题与性能无关!