मैं सोच रहा था कि 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
मैं जानता हूँ कि मैं सिर्फ उदाहरण में छान-बीन कर सकता है, डॉक्स और स्रोत, लेकिन समय एटीएम की कमी के अलावा। (और कुछ खोने की संभावना) यह जानना दिलचस्प होगा: यदि यह संभव नहीं है, तो यह अच्छा होगा अगर कोई यह समझा सके कि (यदि विशिष्ट हैं/विशिष्ट हैं) - क्या यह जानबूझकर था? क्या यह एपीआई अच्छी तरह से मेल नहीं खाता है? ...?
अस्वीकरण: यह प्रश्न प्रदर्शन के बारे में नहीं है!
आपको क्या होने की जब आप कमरे से बाहर चलाने करना चाहते हैं? एक निश्चित बफ के लिए मैं snprintf का उपयोग करूंगा, लेकिन यह मैं हूं :) – nhed
@nhed अगर यह फिट नहीं होता है, तो लाइब्रेरी या तो अपवाद फेंक सकता है या बस बफर भरना बंद कर सकता है ([विकल्प] के समान (http://www.boost.org/doc/libs/1_47_0/libs/format/doc/format.html#exceptions) पहले से ही उपलब्ध है) –
मुझे यकीन नहीं है कि वे अपवाद लक्ष्य बफर – nhed