बफर फ्लश की अवधारणा
बफर फ्लश का उपयोग कंप्यूटर डेटा को एक अस्थायी स्टोरेज क्षेत्र से कंप्यूटर की स्थायी मेमोरी में स्थानांतरित करने के लिए किया जाता है। जब हम किसी फाइल में कुछ बदलते हैं, तो स्क्रीन पर दिखाई देने वाले बदलाव अस्थायी रूप से एक बफर में स्टोर होते हैं।
C++ में एक्सप्लिसिट फ्लशिंग
C++ में, हम बफर को लिखने के लिए मजबूर करने के लिए एक्सप्लिसिटली फ्लश कर सकते हैं। यदि हम std::endl का उपयोग करते हैं, तो यह एक नई लाइन कैरेक्टर जोड़ता है और बफर को फ्लश भी करता है। यदि इसका उपयोग नहीं किया जाता है, तो हम एक्सप्लिसिटली flush का उपयोग कर सकते हैं।
उदाहरण 1: बिना फ्लश के (बफरिंग)
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
int main() {
for (int x = 1; x <= 5; ++x) {
cout << x << " ";
this_thread::sleep_for(chrono::seconds(1)); // 1 सेकंड प्रतीक्षा
}
cout << endl;
return 0;
}
आउटपुट
1 2 3 4 5 (5 सेकंड प्रतीक्षा के बाद एक साथ प्रिंट होगा)
उदाहरण 2: फ्लश के साथ (तत्काल आउटपुट)
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
int main() {
for (int x = 1; x <= 5; ++x) {
cout << x << " " << flush; // प्रत्येक आउटपुट के बाद फ्लश
this_thread::sleep_for(chrono::seconds(1));
}
cout << endl;
return 0;
}
आउटपुट
1 2 3 4 5 (प्रत्येक संख्या 1 सेकंड के अंतराल पर प्रिंट होगी)
फ्लशिंग के तरीके
| तरीका | विवरण |
|---|---|
std::endl | नई लाइन डालता है और बफर फ्लश करता है |
std::flush | केवल बफर फ्लश करता है, नई लाइन नहीं डालता |
std::cout.flush() | cout ऑब्जेक्ट का मेंबर फ़ंक्शन |
std::unitbuf मैनिपुलेटर | प्रत्येक आउटपुट ऑपरेशन के बाद ऑटोमैटिक फ्लश सक्षम करता है |
कब फ्लश करें?
- इंटरैक्टिव प्रोग्राम्स में जहां तत्काल फीडबैक आवश्यक हो
- लॉगिंग सिस्टम्स में जहां लॉग्स तुरंत लिखे जाने चाहिए
- डिबगिंग के दौरान आउटपुट देखने के लिए
- प्रदर्शन-महत्वपूर्ण कोड में अनावश्यक फ्लशिंग से बचें