একটি খসড়া সি ++ 17 স্ট্যান্ডার্ড ডকুমেন্ট থেকে:
30.4.3 সঙ্কীর্ণ স্ট্রিম অবজেক্টস [সরু.প্রবাহ.অবজেক্টস]
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 (30.11.1) এ ঘোষিত cerr
বস্তুর সাথে সম্পর্কিত স্ট্রিম বাফারে আউটপুট নিয়ন্ত্রণ করে ।stderr
<cstdio>
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
) এর উদ্দেশ্য হ'ল প্রোগ্রামটি থেকে অ-ত্রুটিহীন, ডায়াগনস্টিক আউটপুট যেমন সফল প্রসেসিংয়ের আউটপুট যা শেষ ব্যবহারকারীর কাছে প্রদর্শিত হতে পারে বা আরও কিছু প্রক্রিয়াজাত পর্যায়ে প্রবাহিত হতে পারে to
স্ট্যান্ডার্ড ত্রুটি stderr
ডায়াগনস্টিক আউটপুট, যেমন সতর্কতা এবং ত্রুটি বার্তাগুলি দ্বারা নির্দেশিত হয় যা প্রোগ্রামটি আউটপুট ব্যবহারকারী হিসাবে প্রত্যাশা করতে পারে নি বা তৈরি করতে পারে না তা নির্দেশ করে। এই ইনপুটটি শেষ ব্যবহারকারীর কাছে প্রদর্শিত হতে পারে এমনকি যদি আউটপুট ডেটাটি আরও প্রক্রিয়াকরণ পর্যায়ে পাইপ করা হয়।
cin
এবং cerr
বাঁধা হয়cout
তারা উভয়ই cout
I / O অপারেশনগুলি নিজে পরিচালনা করার আগে ফ্লাশ করে। এটি নিশ্চিত করে যে প্রেরিত প্রম্পটগুলি cout
প্রোগ্রামের ব্লকগুলি থেকে ইনপুটটি পড়ার আগে দৃশ্যমান হয় এবং এর আগে কোনও cin
আউটপুট cout
ত্রুটি লেখার আগে ফ্লাশ করা হয় cerr
, যা বার্তাগুলি তাদের প্রজন্মের কালানুক্রমিক ক্রমে রাখে যখন উভয়ই একই টার্মিনাল / ফাইল / নির্দেশিত হয় ইত্যাদি ..
এটি এর সাথে বিপরীত হয় clog
- আপনি যদি সেখানে লিখেন তবে এটি বাফার হবে না এবং কোনও কিছুর সাথে আবদ্ধ হবে না, সুতরাং এটি ফ্লাশ করার আগে শালীন আকারের লগিংয়ের বাফার করবে। এটি বার্তাগুলির সর্বোচ্চ থ্রুটপুট দেয়, তবে এর অর্থ বার্তাগুলি টার্মিনালটি পড়তে বা লগটি শিথিল করে কোনও গ্রাহককে দ্রুত দৃশ্যমান নাও হতে পারে।
stdout
,stdin
(cin
) জন্য এবংstderr
এটি ডিফল্টরূপে ব্যবহার করে। আমি বিশ্বাস করিclog
কেবলcerr
একটি বাফারিং পরিবর্তন নিয়ে।