स्ट्रीम आमतौर पर काफी सुरक्षित होते हैं। कुछ परिस्थितियों में, वे धीमे और/या बेकार हो सकते हैं। धीरे-धीरे, ज्यादातर इस तथ्य से उपजी हैं कि वे आपके कोड और ओएस के बीच कुछ अतिरिक्त परत लगाते हैं, और गलत परिस्थिति में उन परतें ओवरहेड जोड़ सकती हैं। झुकाव ज्यादातर सी के प्रिंटफ की तुलना में है, लिखितफाइल जैसे कुछ प्रत्यक्ष उपयोग नहीं (जो सीधे प्रारूपण का समर्थन नहीं करता है)। उदाहरण के लिए, तथापि, पर विचार करें:
printf("%2.2x", ch);`
std::cout << std::hex << std::setw(2) << std::setprecision(2) << std::setfill('0') << ch;
std::cout << setfill(' ');
को फिर तथ्य यह है कि अगर आप i18n के बारे में परवाह, printf
एक स्ट्रिंग आसान है कि उपयोग कर रहा है एक बाहरी स्रोत है, जहां से पढ़ने के लिए पर विचार सी ++ स्ट्रीम सभी स्वरूपण को कोड की संरचना में एम्बेड कर रहा है, इसलिए फ़ॉर्मेटिंग में लगभग किसी भी बदलाव के लिए कोड को दोबारा लिखना, पुन: सम्मिलित करना और रिलिकिंक करना आवश्यक है।
CreateFile, ReadFile
, आदि, मेमोरी मैप की गई फ़ाइलों जैसी कई चीजों को भी अनुमति देता है और पढ़ने और लिखने को ओवरलैप करता है जो Iostreams द्वारा समर्थित नहीं हैं। यदि स्थिति आपको इनका अच्छा उपयोग करने देती है, तो iostreams अक्सर प्रतिस्पर्धी नहीं होंगे।
स्रोत
2010-01-21 18:09:13
बूस्ट :: प्रारूप लाइब्रेरी एक और विकल्प है जो टाइप-सुरक्षित प्रिंटफ-जैसी स्वरूपण प्रदान करता है: http://www.boost.org/doc/libs/1_41_0/libs/format/doc/format.html – Void
बार-बार उपयोग 'boost :: format' का आपके प्रदर्शन को बुरी तरह नुकसान पहुंचा सकता है। बूस्ट 1.33 का उपयोग कर एक प्रोजेक्ट में, मुझे प्रदर्शन समस्याओं (प्रोफाइलर के साथ मापा गया) के कारण boost :: प्रारूप का उपयोग करना बंद करना पड़ा। –
धन्यवाद, यह जानना अच्छा है। मैंने वास्तव में कभी भी बढ़ावा देने की कोशिश नहीं की है, लेकिन यह देखकर कि यह बहुत लोकप्रिय है, मुझे शायद इसे कभी-कभी जांचना चाहिए। –