我想知道Boost.Format是否支持使用固定宽度/预分配缓冲区作为输出,而不是由库自己管理的动态缓冲区?
也就是说,通常您会这样做:
所以Boost:Format库会自动分配足够的空间并为您管理“输出缓冲区”。我想知道是否有办法在Boost.Format中使用预定义的非动态缓冲区,例如:
我知道我可以浏览示例、文档和源代码,但除了现在缺少时间(可能会错过一些东西),还有一个有趣的问题需要解决:如果不可能,如果有具体的原因,有人能解释一下吗?——这是故意的吗?它是否与API匹配?......?
也就是说,通常您会这样做:
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
我知道我可以浏览示例、文档和源代码,但除了现在缺少时间(可能会错过一些东西),还有一个有趣的问题需要解决:如果不可能,如果有具体的原因,有人能解释一下吗?——这是故意的吗?它是否与API匹配?......?
免责声明:此问题不涉及性能!