ड्राफ्ट C ++ 17 मानक दस्तावेज़ से:
30.4.3 नैरो स्ट्रीम ऑब्जेक्ट्स [संकीर्ण.स्ट्रीम .objects]
istream cin;
1 ऑब्जेक्ट (30.11.1) में घोषित cinऑब्जेक्ट से जुड़े स्ट्रीम बफर से इनपुट को नियंत्रित करता है ।stdin<cstdio>
2 वस्तु cinके आरंभिक होने के बाद , cin.tie()रिटर्न &cout। इसकी स्थिति अन्यथा basic_ios<char>::init(30.5.5.2) के लिए आवश्यक है ।
ostream cout;
3 ऑब्जेक्ट (30.11.1) में घोषित coutऑब्जेक्ट से जुड़े स्ट्रीम बफर को आउटपुट नियंत्रित करता है ।stdout<cstdio>
ostream cerr;
4 ऑब्जेक्ट cerrआउटपुट से संबंधित ऑब्जेक्ट के साथ जुड़े स्ट्रीम बफर को नियंत्रित करता है stderr, जिसमें घोषित किया गया है<cstdio> (30.11.1) ।
5 ऑब्जेक्ट cerrको इनिशियलाइज़ करने के बाद , cerr.flags() & unitbufनॉनज़रो और cerr.tie()रिटर्न होता है &cout। इसकी स्थिति अन्यथा basic_ios<char>::init(30.5.5.2) के लिए आवश्यक है ।
ostream clog;
6 ऑब्जेक्ट (30.11.1) में घोषित clogऑब्जेक्ट से जुड़े स्ट्रीम बफर को आउटपुट नियंत्रित करता है ।stderr<cstdio>
चर्चा ...
coutको लिखता है stdout; cerrऔर clogकरने के लिएstderr
मानक आउट ( stdout) का उद्देश्य कार्यक्रम से गैर-त्रुटि, गैर-नैदानिक आउटपुट प्राप्त करना है, जैसे कि सफल प्रसंस्करण से आउटपुट जो अंतिम-उपयोगकर्ता को प्रदर्शित किया जा सकता है या कुछ और प्रसंस्करण चरण में स्ट्रीम किया जा सकता है।
stderrनैदानिक त्रुटि के लिए मानक त्रुटि ( ) का इरादा है, जैसे कि चेतावनी और त्रुटि संदेश जो प्रोग्राम को इंगित करता है कि उपयोगकर्ता ने अपेक्षित आउटपुट का उत्पादन नहीं किया है या नहीं किया है। यह इनपुट अंतिम उपयोगकर्ता को भी दिखाया जा सकता है, भले ही आउटपुट डेटा को आगे की प्रक्रिया के चरण में ले जाया गया हो।
cinऔर cerrबंधे हुए हैंcout
coutI / O संचालन से निपटने से पहले वे दोनों फ्लश करते हैं। यह सुनिश्चित करता है कि भेजे गए संकेत coutप्रोग्राम ब्लॉक से इनपुट को पढ़ने से पहले दिखाई दे रहे हैं cin, और इससे पहले के आउटपुट के coutमाध्यम से एक त्रुटि लिखने से पहले फ्लश किया जाता है cerr, जो संदेशों को अपनी पीढ़ी के कालानुक्रमिक क्रम में रखता है जब दोनों को एक ही टर्मिनल / फ़ाइल / के लिए निर्देशित किया जाता है आदि..
इसके साथ विरोधाभास है clog- अगर आप लिखते हैं कि यह बफ़र नहीं किया जाएगा और किसी भी चीज़ से बंधा नहीं होगा, तो यह फ्लशिंग करने से पहले सभ्य आकार की लॉगिंग को बफर कर देगा। यह संदेशों के उच्चतम थ्रूपुट की पैदावार करता है, लेकिन इसका मतलब यह है कि टर्मिनल को पढ़ने वाले या लॉग को टेल करने वाले उपभोक्ता को संदेश जल्दी से दिखाई नहीं दे सकते हैं।
stdout,stdin(के लिएcin), औरstderrयह कि वह डिफ़ॉल्ट रूप से उपयोग करता है। मेरा माननाclogहै कि बसcerrएक बफ़रिंग परिवर्तन के साथ है।