我想知道Boost.Format是否支持使用固定寬度/預分配的緩衝區作爲輸出,而不是由lib本身管理的動態緩衝區?是否可以使用預分配緩衝區的Boost.Format?
也就是說,正常情況下你會怎麼做:
boost::format myfmt("arg1: %1%/arg2: %2%");
// e.g.:
cout << (myfmt % 3.14 % 42);
// or
string s = boost::str(myfmt % "hey!" % "there!");
所以升壓:格式LIB將自動完成分配足夠的空間和管理「輸出緩衝區」爲你的。
我想知道是否有任何方式使用與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嗎? ...?
聲明:這個問題是不是關於性能!
你要什麼,當你運行的空間會發生什麼?對於一個固定的buff,我會使用snprintf,但這就是我:) – nhed
@nhed如果它不合適,庫可以/可以拋出一個異常或只是停止填充緩衝區(類似於[選項](http:///www.boost.org/doc/libs/1_47_0/libs/format/doc/format.html#exceptions)已提供) –
我不確定那些例外情況適用於目標緩衝區 – nhed