স্ট্রিম ম্যানিপুলেটর হলো কিছু ফাংশন যেগুলো সরাসরি ইন্সারশন (<<) এবং এক্সট্রাকশন (>>) অপারেটরসহ স্ট্রিম অবজেক্টের সাথে ব্যবহার করার জন্য ডিজাইন করা হয়েছে, উদাহরণস্বরূপ:
std::cout << std::setw(10);
এগুলো এখনও রেগুলার ফাংশন এবং অন্য ফাংশনের মত একটি স্ট্রিম অবজেক্ট আর্গুমেন্ট হিসেবে দিয়ে কল করা যায়, উদাহরণস্বরূপ:
boolalpha(cout);
ম্যানিপুলেটরগুলো স্ট্রিমের ফরম্যাটিং প্যারামিটার পরিবর্তন করতে এবং কিছু স্পেশাল ক্যারেক্টার ইনসার্ট বা এক্সট্রাক্ট করতে ব্যবহৃত হয়।
নিচে সবচেয়ে ব্যাপকভাবে ব্যবহৃত কিছু C++ ম্যানিপুলেটর দেওয়া হলো:
endl
এই ম্যানিপুলেটরটি '\n' (নিউলাইন ক্যারেক্টার) এর মতো কাজ করে। কিন্তু এটি আউটপুট স্ট্রিম ফ্লাশও করে।
উদাহরণ
#include <iostream>
int main() {
std::cout << "Hello" << std::endl << "World!";
}
আউটপুট
Hello World!
showpoint/noshowpoint
এই ম্যানিপুলেটর কন্ট্রোল করে ফ্লোটিং-পয়েন্ট রিপ্রেজেন্টেশনে দশমিক পয়েন্ট সবসময় থাকবে কিনা।
উদাহরণ
#include <iostream>
int main() {
std::cout << "1.0 with showpoint: " << std::showpoint << 1.0 << '\n'
<< "1.0 with noshowpoint: " << std::noshowpoint << 1.0 << '\n';
}
আউটপুট
1.0 with showpoint: 1.00000 1.0 with noshowpoint: 1
setprecision
এই ম্যানিপুলেটর ফ্লোটিং-পয়েন্ট প্রেসিশন পরিবর্তন করে। যখন এটি out << setprecision(n) বা in >> setprecision(n) এক্সপ্রেশনে ব্যবহৃত হয়, তবে স্ট্রিম out বা in-এর প্রেসিশন প্যারামিটারকে একদম n সেট করে।
উদাহরণ
#include <iostream>
#include <iomanip>
int main() {
const long double pi = 3.141592653589793239;
std::cout << "default precision (6): " << pi << '\n'
<< "std::setprecision(10): " << std::setprecision(10) << pi << '\n';
}
আউটপুট
default precision (6): 3.14159 std::setprecision(10): 3.141592654
setw
এই ম্যানিপুলেটর পরবর্তী ইনপুট/আউটপুট ফিল্ডের चौডাই পরিবর্তন করে। যখন এটি out << setw(n) বা in >> setw(n) এক্সপ্রেশনে ব্যবহৃত হয়, তবে স্ট্রিম out বা in-এর চৌড়া প্যারামিটারকে একদম n সেট করে।
উদাহরণ
#include <iostream>
#include <iomanip>
int main() {
std::cout << "no setw:" << 42 << '\n'
<< "setw(6):" << std::setw(6) << 42 << '\n'
<< "setw(6), several elements: " << 89 << std::setw(6) << 12 << 34 << '\n';
}
আউটপুট
no setw:42 setw(6): 42 setw(6), several elements: 89 1234