cin, cout, cerr, এবং clog হলো স্ট্রিম যেগুলো স্ট্যান্ডার্ড ইনপুট এবং স্ট্যান্ডার্ড আউটপুট হ্যান্ডেল করে। এগুলো iostream হেডার ফাইলে ডিফাইন করা স্ট্রিম অবজেক্ট।
std::cin istream ক্লাসের একটি অবজেক্ট যা ন্যারো ক্যারেক্টার (char টাইপ)-ওরিয়েন্টেড স্ট্যান্ডার্ড ইনপুট স্ট্রিমকে রিপ্রেজেন্ট করে। এটি C স্ট্রিম stdin-এর সাথে відповাপ ফেরত দেয়। স্ট্যান্ডার্ড ইনপুট স্ট্রিম হলো এনভায়রনমেন্ট দ্বারা নির্ধারিত ক্যারেক্টারগুলোর একটি সোর্স। সাধারণত এটি এক্সটার্নাল সোর্স থেকে ইনপুট মনে করা হয়, যেমন কিবোর্ড বা একটি ফাইল।
std::cout ostream ক্লাসের একটি অবজেক্ট যা ন্যারো ক্যারেক্টার (char টাইপ)-ওরিয়েন্টেড স্ট্যান্ডার্ড আউটপুট স্ট্রিমকে রিপ্রেজেন্ট করে। এটি C স্ট্রিম stdout-এর সাথে відповাপ ফেরত দেয়। স্ট্যান্ডার্ড আউটপুট স্ট্রিম হলো এনভায়রনমেন্ট দ্বারা নির্ধারিত ক্যারেক্টারগুলোর ডিফল্ট ডেস্টিনেশন। এই ডেস্টিনেশন আরও স্ট্যান্ডার্ড অবজেক্টসহ (যেমন cerr বা clog) শেয়ার করা যেতে পারে।
cerr অবজেক্ট stderr সাথে জড়িত একটি স্ট্রিম বাফারে আউটপুট কন্ট্রোল করে, যা <cstdio>-এ ডিক্লেয়ার করা হয়েছে। এটি স্ট্যান্ডার্ড আউটপুট স্ট্রিমে এরর আউটপুট করার জন্য ব্যবহৃত হয়।
নোট - এই হেডারে ডিক্লেয়ার করা সকল অবজেক্ট একটি বিশেষ প্রোপার্টি শেয়ার করে - আপনি অনুমান করতে পারেন সেগুলো আপনার ডিফাইন করা যেকোনো স্ট্যাটিক অবজেক্টের আগে কনস্ট্রাক্ট হয়েছে, একটি ট্রান্সলেশন ইউনিটে যা <iostream> ইনক্লুড করে। সমানভাবে, আপনি অনুমান করতে পারেন যে এই অবজেক্টগুলো আপনার ডিফাইন করা যেকোনো স্ট্যাটিক অবজেক্টের ডিস্ট্রাক্টরের আগে ডিস্ট্রয় না হবে। (আউটপুট স্ট্রিমগুলো হলেও, প্রোগ্রাম টার্মিনেশনের সময় ফ্লাশ হয়।) তাই, আপনি প্রোগ্রাম স্টার্টআপের আগে এবং প্রোগ্রাম টার্মিনেশনের পরও সফলভাবে স্ট্যান্ডার্ড স্ট্রিম থেকে পড়তে বা লিখতে পারেন।
আপনি এই স্ট্রিম অবজেক্টগুলো নিচের মত ব্যবহার করতে পারেন:
উদাহরণ
#include <iostream>
int main() {
int my_int;
std::cin >> my_int;
std::cout << my_int;
std::cerr << "An error message";
return 0;
}
তারপর এই প্রোগ্রামটি hello.cpp ফাইলে সেভ করুন। অবশেষে টার্মিনাল/কম্ড-এ এই ফাইলটির সেভড লোকেশনে নেভিগেট করুন এবং কম্পাইল করুন:
$ g++ hello.cpp
রান করুন:
$ ./a.out
আউটপুট
আপনি যদি ইনপুট ১৫ দেন, তবে এটি নিচের আউটপুট দেবে:
15 An error message