একটি খসড়া সি ++ 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
তারা উভয়ই coutI / O অপারেশনগুলি নিজে পরিচালনা করার আগে ফ্লাশ করে। এটি নিশ্চিত করে যে প্রেরিত প্রম্পটগুলি coutপ্রোগ্রামের ব্লকগুলি থেকে ইনপুটটি পড়ার আগে দৃশ্যমান হয় এবং এর আগে কোনও cinআউটপুট coutত্রুটি লেখার আগে ফ্লাশ করা হয় cerr, যা বার্তাগুলি তাদের প্রজন্মের কালানুক্রমিক ক্রমে রাখে যখন উভয়ই একই টার্মিনাল / ফাইল / নির্দেশিত হয় ইত্যাদি ..
এটি এর সাথে বিপরীত হয় clog- আপনি যদি সেখানে লিখেন তবে এটি বাফার হবে না এবং কোনও কিছুর সাথে আবদ্ধ হবে না, সুতরাং এটি ফ্লাশ করার আগে শালীন আকারের লগিংয়ের বাফার করবে। এটি বার্তাগুলির সর্বোচ্চ থ্রুটপুট দেয়, তবে এর অর্থ বার্তাগুলি টার্মিনালটি পড়তে বা লগটি শিথিল করে কোনও গ্রাহককে দ্রুত দৃশ্যমান নাও হতে পারে।
stdout,stdin(cin) জন্য এবংstderrএটি ডিফল্টরূপে ব্যবহার করে। আমি বিশ্বাস করিclogকেবলcerrএকটি বাফারিং পরিবর্তন নিয়ে।