C++ তে ইনপুট ও আউটপুট (I/O) স্ট্রিমস ব্যবহৃত হয় ডেটা ইনপুট ও আউটপুট পরিচালনা করতে। C++ স্ট্যান্ডার্ড লাইব্রেরি I/O অপারেশনের জন্য iostream লাইব্রেরি প্রদান করে। এই লাইব্রেরির মাধ্যমে আপনি কনসোলের সাথে, ফাইলের সাথে এবং অন্যান্য স্ট্রিমের সাথে ডেটা আদান-প্রদান করতে পারেন। C++ এ দুটি প্রধান ধরনের স্ট্রিম রয়েছে: ইনপুট স্ট্রিম এবং আউটপুট স্ট্রিম।
I/O স্ট্রিমস (ইনপুট/আউটপুট স্ট্রিমস) এর প্রধান উপাদানসমূহ
১. iostream লাইব্রেরি
C++ এর iostream লাইব্রেরি দুটি প্রধান ফাংশনালিটি সরবরাহ করে:
std::cin: এটি ইনপুট স্ট্রিমের জন্য ব্যবহৃত হয়, যা ব্যবহারকারীর কাছ থেকে ডেটা গ্রহণ করতে সাহায্য করে।std::cout: এটি আউটপুট স্ট্রিমের জন্য ব্যবহৃত হয়, যা কনসোলে ডেটা প্রদর্শন করতে সাহায্য করে।std::cerr: এটি ত্রুটি বার্তা আউটপুটের জন্য ব্যবহৃত হয়, যা সাধারণত ভুল বা ত্রুটি সম্পর্কে তথ্য প্রদর্শন করতে ব্যবহৃত হয়।std::clog: এটি লগ মেসেজ আউটপুটের জন্য ব্যবহৃত হয়।
উদাহরণ:
#include <iostream>
int main() {
int num;
// ইনপুট গ্রহণ
std::cout << "Enter a number: ";
std::cin >> num;
// আউটপুট প্রদর্শন
std::cout << "You entered: " << num << std::endl;
return 0;
}২. ইনপুট স্ট্রিম (Input Stream)
ইনপুট স্ট্রিম ডেটা গ্রহণের জন্য ব্যবহৃত হয়। C++ তে, std::cin প্রধান ইনপুট স্ট্রিম হিসেবে ব্যবহৃত হয়। এটি কনসোল বা ব্যবহারকারী থেকে ডেটা গ্রহণ করে।
std::cin: এটি স্ট্যান্ডার্ড ইনপুট স্ট্রিম। এটি সাধারণত কিবোর্ড থেকে ইনপুট নেওয়ার জন্য ব্যবহৃত হয়।
উদাহরণ:
#include <iostream>
int main() {
int a, b;
std::cout << "Enter two integers: ";
std::cin >> a >> b; // কিবোর্ড থেকে দুটি পূর্ণসংখ্যা ইনপুট নেওয়া
std::cout << "Sum: " << a + b << std::endl; // যোগফল প্রদর্শন
return 0;
}৩. আউটপুট স্ট্রিম (Output Stream)
আউটপুট স্ট্রিম ডেটা প্রদর্শন বা লেখার জন্য ব্যবহৃত হয়। C++ তে, std::cout প্রধান আউটপুট স্ট্রিম হিসেবে ব্যবহৃত হয়। এটি কনসোলে আউটপুট প্রদর্শন করতে ব্যবহৃত হয়।
std::cout: এটি স্ট্যান্ডার্ড আউটপুট স্ট্রিম। এটি সাধারণত কনসোলে আউটপুট প্রদর্শন করতে ব্যবহৃত হয়।
উদাহরণ:
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl; // কনসোলে "Hello, World!" প্রদর্শন
return 0;
}৪. ত্রুটি স্ট্রিম (Error Stream)
C++ তে std::cerr এবং std::clog ত্রুটি ও লগ বার্তা আউটপুটের জন্য ব্যবহৃত হয়। এগুলি কনসোলে ত্রুটি বা লগ মেসেজগুলি প্রদর্শন করতে সাহায্য করে।
std::cerr: এটি ত্রুটি বার্তা প্রদর্শন করে এবং সাধারণতstderrহিসাবে পরিচালিত হয়। এটি আউটপুট স্ট্রিমের মতো কাজ করে কিন্তু এটি ব্যবহারকারীকে সতর্ক করতে সহায়ক।std::clog: এটি সাধারণ লগ বার্তা প্রদর্শন করতে ব্যবহৃত হয়, যা সাধারণতstdoutহিসাবে পরিচালিত হয়।
উদাহরণ (ত্রুটি বার্তা):
#include <iostream>
int main() {
int num = -1;
if (num < 0) {
std::cerr << "Error: Number cannot be negative!" << std::endl; // ত্রুটি বার্তা প্রদর্শন
}
return 0;
}৫. ফাইল ইনপুট/আউটপুট (File I/O)
C++ এ ফাইলের সাথে কাজ করার জন্য fstream লাইব্রেরি ব্যবহার করা হয়। এটি ইনপুট ও আউটপুট স্ট্রিমের জন্য ফাইল ব্যবহারের সুবিধা প্রদান করে। std::ifstream (ইনপুট ফাইল স্ট্রিম) এবং std::ofstream (আউটপুট ফাইল স্ট্রিম) ফাইল পরিচালনার জন্য ব্যবহৃত হয়।
std::ifstream: এটি একটি ইনপুট ফাইল স্ট্রিম, যা ফাইল থেকে ডেটা পড়ে।std::ofstream: এটি একটি আউটপুট ফাইল স্ট্রিম, যা ফাইলে ডেটা লেখে।std::fstream: এটি ফাইল থেকে ডেটা পড়া এবং ফাইলে ডেটা লেখা উভয়ের জন্য ব্যবহৃত হয়।
উদাহরণ (ফাইল থেকে পড়া ও লেখার):
#include <iostream>
#include <fstream>
int main() {
std::ofstream outFile("example.txt");
outFile << "Hello, File!" << std::endl; // ফাইলে লেখা
outFile.close();
std::ifstream inFile("example.txt");
std::string line;
if (getline(inFile, line)) {
std::cout << "File content: " << line << std::endl; // ফাইল থেকে পড়া
}
inFile.close();
return 0;
}৬. স্ট্রিম ফরম্যাটিং (Stream Formatting)
C++ স্ট্যান্ডার্ড লাইব্রেরি বিভিন্ন ফরম্যাটিং অপশন সরবরাহ করে যেমন std::setw, std::setprecision, std::fixed, std::scientific ইত্যাদি, যা আউটপুট স্ট্রিমে ডেটার উপস্থাপন পরিবর্তন করতে ব্যবহৃত হয়।
উদাহরণ (স্ট্রিম ফরম্যাটিং):
#include <iostream>
#include <iomanip> // স্ট্রিম ফরম্যাটিং
int main() {
double num = 3.14159265358979;
std::cout << "Default: " << num << std::endl;
std::cout << "Fixed: " << std::fixed << num << std::endl;
std::cout << "Precision (3 digits): " << std::setprecision(3) << num << std::endl;
return 0;
}উপসংহার
C++ তে I/O স্ট্রিমগুলি ডেটা ইনপুট ও আউটপুট পরিচালনা করতে গুরুত্বপূর্ণ উপাদান। std::cin, std::cout, std::cerr, এবং std::clog স্ট্রিমগুলোর মাধ্যমে কনসোল I/O করা যায়, এবং std::ifstream, std::ofstream এর মাধ্যমে ফাইল I/O করা যায়। এছাড়াও, C++ স্ট্রিম ফরম্যাটিং ফাংশনগুলো আউটপুট স্ট্রিমে ডেটার উপস্থাপনকে আরও সহজ করে তোলে।
iostream হেডার সি++ এর একটি স্ট্যান্ডার্ড লাইব্রেরি যা ইনপুট এবং আউটপুট পরিচালনার জন্য ব্যবহৃত হয়। এটি C++ প্রোগ্রামিং ভাষায় কনসোল ইনপুট এবং আউটপুট পরিচালনার জন্য একটি শক্তিশালী হেডার, যার মধ্যে বিভিন্ন স্ট্রিম ক্লাস এবং ফাংশন রয়েছে। iostream ব্যবহার করে প্রোগ্রামাররা কনসোল থেকে ডেটা নিতে (ইনপুট) এবং প্রদর্শন করতে (আউটপুট) পারে।
iostream এর প্রধান উপাদানগুলো
iostream হেডারটি মূলত তিনটি প্রধান স্ট্রিম ব্যবহার করে:
- std::cin: ব্যবহারকারীর কাছ থেকে ইনপুট নেয়ার জন্য ব্যবহৃত হয়।
- std::cout: কনসোলে আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়।
- std::cerr: ত্রুটি বা এরর বার্তা প্রদর্শনের জন্য ব্যবহৃত হয়, যা তাত্ক্ষণিকভাবে আউটপুট দেয়।
iostream ব্যবহার করার উপায়
উদাহরণ ১: std::cout দিয়ে আউটপুট প্রদর্শন
std::cout স্ট্রিমটি আউটপুট স্ট্রিম, যা প্রোগ্রামের আউটপুটকে কনসোলে প্রিন্ট করে। এটি << অপারেটরের মাধ্যমে বিভিন্ন ডেটা টাইপকে কনসোলে প্রিন্ট করতে সক্ষম।
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl; // "Hello, World!" কনসোলে প্রিন্ট করবে
std::cout << "Welcome to C++ Programming." << std::endl;
return 0;
}এখানে std::endl লাইনের শেষে ব্যবহৃত হয়, যা একটি নতুন লাইন তৈরি করে এবং আউটপুট স্ট্রিম ফ্লাশ করে।
উদাহরণ ২: std::cin দিয়ে ইনপুট নেয়া
std::cin স্ট্রিমটি ইনপুট স্ট্রিম, যা ব্যবহারকারীর কাছ থেকে ইনপুট নেয়। এটি >> অপারেটরের মাধ্যমে ইনপুট নিতে ব্যবহার করা হয়।
#include <iostream>
int main() {
int age;
std::cout << "Enter your age: ";
std::cin >> age; // ব্যবহারকারী ইনপুট হিসেবে একটি সংখ্যা দিবে
std::cout << "You entered: " << age << std::endl;
return 0;
}এখানে std::cin ব্যবহার করে age ভেরিয়েবলে ব্যবহারকারীর ইনপুট নেয়া হয়েছে এবং তারপর std::cout ব্যবহার করে সেই ইনপুট প্রদর্শন করা হয়েছে।
উদাহরণ ৩: std::cerr দিয়ে ত্রুটি বার্তা প্রদর্শন
std::cerr সাধারণত এরর বা ত্রুটি বার্তা প্রদর্শনের জন্য ব্যবহৃত হয়। এটি std::cout এর মতো কাজ করে তবে সাধারণত ত্রুটি প্রদর্শনের জন্য ব্যবহৃত হয়।
#include <iostream>
int main() {
int divisor = 0;
int dividend = 10;
if (divisor == 0) {
std::cerr << "Error: Division by zero!" << std::endl;
} else {
std::cout << "Result: " << (dividend / divisor) << std::endl;
}
return 0;
}এখানে std::cerr ব্যবহার করে ত্রুটি বার্তা প্রিন্ট করা হয়েছে, যখন ডিভাইসর শূন্য হলে তা Division by Zero এর ত্রুটি হিসেবে দেখানো হয়।
iostream এর ব্যবহারিক দিক
- ইনপুট এবং আউটপুট সহজতর করা:
iostreamব্যবহার করে ব্যবহারকারী সহজেই কনসোল ইনপুট ও আউটপুট পরিচালনা করতে পারে। - ত্রুটি প্রদর্শন:
std::cerrব্যবহার করে ত্রুটি বার্তা সহজে প্রদর্শন করা যায়। - কোডের পাঠযোগ্যতা:
iostreamকোডের পাঠযোগ্যতা বাড়ায় এবং এটি ব্যবহার করে কোড আরও মডুলার করা যায়।
সংক্ষেপে
iostream একটি অত্যন্ত গুরুত্বপূর্ণ হেডার যা ইনপুট এবং আউটপুট পরিচালনার জন্য ব্যবহৃত হয়। এটি মূলত std::cin, std::cout, এবং std::cerr স্ট্রিমের মাধ্যমে কাজ করে। iostream স্ট্রিমের মাধ্যমে প্রোগ্রামাররা ব্যবহারকারীর কাছ থেকে ডেটা নিতে এবং আউটপুট প্রদর্শন করতে পারে, যা প্রোগ্রামিংকে আরও কার্যকর ও সহজ করে।
C++ তে cin, cout, এবং cerr হল ইনপুট এবং আউটপুট পরিচালনার জন্য স্ট্যান্ডার্ড স্ট্রিমের অংশ। এগুলো iostream লাইব্রেরি দ্বারা সরবরাহিত এবং প্রোগ্রামে ইনপুট নেয়া এবং আউটপুট প্রদর্শন করার জন্য ব্যবহৃত হয়। প্রতিটি স্ট্রিমের একটি নির্দিষ্ট উদ্দেশ্য আছে:
১. cin (Standard Input Stream)
cin স্ট্যান্ডার্ড ইনপুট স্ট্রিম, যা কীবোর্ড থেকে ডেটা গ্রহণ করতে ব্যবহৃত হয়। এটি সাধারণত ইউজার থেকে ইনপুট গ্রহণ করতে ব্যবহৃত হয়।
উদাহরণ (cin ব্যবহার):
#include <iostream>
int main() {
int age;
// ইউজার থেকে ইনপুট নেওয়া
std::cout << "Enter your age: ";
std::cin >> age; // কীবোর্ড থেকে ইনপুট নেওয়া
std::cout << "Your age is: " << age << std::endl;
return 0;
}এখানে, std::cin >> age; এর মাধ্যমে ইউজার থেকে একটি ইন্টিজার ইনপুট নেয়া হচ্ছে এবং সেটি ভেরিয়েবলে সংরক্ষণ করা হচ্ছে।
২. cout (Standard Output Stream)
cout স্ট্যান্ডার্ড আউটপুট স্ট্রিম, যা স্ক্রীনে আউটপুট প্রদর্শন করতে ব্যবহৃত হয়। এটি সাধারণত ইউজারের কাছে তথ্য প্রিন্ট করার জন্য ব্যবহৃত হয়।
উদাহরণ (cout ব্যবহার):
#include <iostream>
int main() {
int num1 = 10, num2 = 20;
// আউটপুট প্রদর্শন করা
std::cout << "The sum of " << num1 << " and " << num2 << " is " << num1 + num2 << std::endl;
return 0;
}এখানে, std::cout ব্যবহার করে num1, num2, এবং তাদের যোগফল স্ক্রীনে প্রদর্শিত হচ্ছে।
৩. cerr (Standard Error Stream)
cerr হল স্ট্যান্ডার্ড ত্রুটি আউটপুট স্ট্রিম। এটি ত্রুটি বার্তা প্রদর্শনের জন্য ব্যবহৃত হয় এবং সাধারণত ব্যবহারকারীর জন্য ত্রুটি বা সমস্যা সম্পর্কে অবহিত করার জন্য ব্যবহৃত হয়। cerr স্বাভাবিক আউটপুটের থেকে আলাদা, কারণ এটি আউটপুটকে স্ট্যান্ডার্ড আউটপুট থেকে আলাদা করে দেখায়, এবং ত্রুটি বার্তা দ্রুত প্রদর্শন করতে পারে।
উদাহরণ (cerr ব্যবহার):
#include <iostream>
int main() {
int x = -1;
// যদি x এর মান নেতিবাচক হয়, তাহলে ত্রুটি বার্তা দেখানো হবে
if (x < 0) {
std::cerr << "Error: x cannot be negative!" << std::endl;
}
return 0;
}এখানে, যদি x এর মান নেতিবাচক হয়, তাহলে std::cerr ব্যবহার করে একটি ত্রুটি বার্তা স্ক্রীনে প্রদর্শিত হয়।
cin, cout, এবং cerr এর মধ্যে পার্থক্য
cin: কীবোর্ড থেকে ইনপুট গ্রহণের জন্য ব্যবহৃত হয়।cout: স্ক্রীনে আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়।cerr: ত্রুটি বা সমস্যা সম্পর্কে ত্রুটি বার্তা প্রদর্শনের জন্য ব্যবহৃত হয়।
cerr এর আউটপুট সাধারণত cout এর চেয়ে দ্রুত প্রদর্শিত হয় কারণ এটি স্ট্যান্ডার্ড আউটপুট স্ট্রিমের বাইরে চলে এবং সরাসরি ব্যবহারকারীকে ত্রুটি জানায়।
C++-এ ফাইল ইনপুট এবং আউটপুট পরিচালনার জন্য ifstream, ofstream, এবং fstream ক্লাসগুলি ব্যবহৃত হয়। এগুলো fstream লাইব্রেরির অংশ, যা C++ স্ট্যান্ডার্ড লাইব্রেরির একটি গুরুত্বপূর্ণ উপাদান। এগুলোর সাহায্যে ফাইল থেকে ডেটা পড়া (ইনপুট) এবং ফাইলে ডেটা লেখা (আউটপুট) খুব সহজ হয়। প্রতিটি ক্লাসের উদ্দেশ্য এবং ব্যবহার কিভাবে করা হয় তা নিচে বিস্তারিত আলোচনা করা হলো।
১. ifstream (Input File Stream)
ifstream হলো একটি ইনপুট স্ট্রিম ক্লাস, যা শুধুমাত্র ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি ফাইলের মধ্যে ডেটা পড়ে প্রোগ্রামে ব্যবহার করতে পারেন। এটি মূলত std::istream থেকে প্রাপ্ত একটি ক্লাস।
ব্যবহার:
- ফাইল থেকে ডেটা পড়া:
ifstreamব্যবহার করে ফাইল থেকে ডেটা পড়া হয়। - ফাইল খোলার জন্য
open()মেথড অথবা কনস্ট্রাকটরের মাধ্যমে ফাইল খোলা হয়। - ফাইল বন্ধ করার জন্য
close()মেথড ব্যবহার করা হয়।
উদাহরণ:
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ifstream inFile("example.txt"); // ফাইল খুলে ইনপুট ফাইল স্ট্রিম তৈরি
if (!inFile) { // ফাইল খুলতে সমস্যা হলে
std::cerr << "Unable to open file" << std::endl;
return 1;
}
std::string line;
while (getline(inFile, line)) { // ফাইলের লাইন বাই লাইন পড়া
std::cout << line << std::endl; // প্রতিটি লাইন আউটপুট করা
}
inFile.close(); // ফাইল বন্ধ করা
return 0;
}২. ofstream (Output File Stream)
ofstream হলো একটি আউটপুট স্ট্রিম ক্লাস, যা শুধুমাত্র ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি প্রোগ্রাম থেকে ফাইলে ডেটা লিখতে পারেন। এটি std::ostream থেকে প্রাপ্ত একটি ক্লাস।
ব্যবহার:
- ফাইলে ডেটা লেখা:
ofstreamব্যবহার করে ফাইলে ডেটা লেখা হয়। - ফাইল খোলার জন্য
open()মেথড অথবা কনস্ট্রাকটরের মাধ্যমে ফাইল খোলা হয়। - ফাইল বন্ধ করার জন্য
close()মেথড ব্যবহার করা হয়।
উদাহরণ:
#include <iostream>
#include <fstream>
int main() {
std::ofstream outFile("output.txt"); // ফাইল খুলে আউটপুট ফাইল স্ট্রিম তৈরি
if (!outFile) { // ফাইল খুলতে সমস্যা হলে
std::cerr << "Unable to open file" << std::endl;
return 1;
}
outFile << "Hello, this is a test message!" << std::endl; // ফাইলে লেখার জন্য
outFile << "C++ file handling is easy!" << std::endl;
outFile.close(); // ফাইল বন্ধ করা
return 0;
}৩. fstream (File Stream)
fstream হলো একটি ক্লাস যা ইনপুট এবং আউটপুট উভয় স্ট্রিম সমর্থন করে। এটি ifstream এবং ofstream এর মতোই কাজ করতে পারে, তবে এটি একটি ফাইল থেকে ডেটা পড়া এবং ফাইলে ডেটা লেখা উভয় কাজ করতে সক্ষম।
ব্যবহার:
- ফাইল থেকে ডেটা পড়া এবং ফাইলে ডেটা লেখা:
fstreamব্যবহার করে একটি ফাইল থেকে ডেটা পড়া এবং তাতে ডেটা লেখা যায়। - ফাইল খোলার জন্য
open()মেথড অথবা কনস্ট্রাকটরের মাধ্যমে ফাইল খোলা হয়। - ফাইল বন্ধ করার জন্য
close()মেথড ব্যবহার করা হয়।
উদাহরণ:
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::fstream file("example.txt", std::ios::in | std::ios::out); // ফাইল খোলা পড়া এবং লেখা উভয়ের জন্য
if (!file) { // ফাইল খোলতে সমস্যা হলে
std::cerr << "Unable to open file" << std::endl;
return 1;
}
// ফাইল থেকে ডেটা পড়া
std::string line;
while (getline(file, line)) {
std::cout << "Read from file: " << line << std::endl;
}
// ফাইলে ডেটা লেখা
file.clear(); // EOF এবং অন্যান্য ফ্ল্যাগ মুছে ফেলুন
file.seekp(0, std::ios::end); // ফাইলের শেষে লেখা শুরু
file << "Adding a new line to the file." << std::endl;
file.close(); // ফাইল বন্ধ করা
return 0;
}ফাইল অপেনিং মোড
ifstream, ofstream, এবং fstream এর সাহায্যে ফাইল ওপেন করার সময় ভিন্ন ভিন্ন মোড ব্যবহার করা যায়। কিছু সাধারণ মোড নিচে দেয়া হলো:
std::ios::in: ফাইল পড়ার জন্য।std::ios::out: ফাইলে লেখার জন্য।std::ios::app: ফাইলের শেষে লেখা।std::ios::ate: ফাইল খোলার সময় শেষের দিকে চলে যায়।std::ios::binary: বাইনারি মোডে ফাইল খোলা।
উদাহরণ:
std::fstream file("file.bin", std::ios::in | std::ios::out | std::ios::binary);উপসংহার
ifstream: ফাইল থেকে ডেটা পড়ার জন্য।ofstream: ফাইলে ডেটা লেখার জন্য।fstream: ফাইল থেকে ডেটা পড়া এবং ফাইলে ডেটা লেখা উভয়ের জন্য।
এই তিনটি ক্লাসই ফাইল ম্যানিপুলেশন খুব সহজ এবং কার্যকরী করে তোলে। এগুলোর মাধ্যমে আপনি সহজেই ফাইলের সাথে কাজ করতে পারবেন এবং ইনপুট/আউটপুট অপারেশন সম্পাদন করতে পারবেন।
String Streams, বিশেষ করে istringstream এবং ostringstream, C++ স্ট্যান্ডার্ড লাইব্রেরিতে sstream হেডার ফাইলে সংযুক্ত থাকে। এগুলো ব্যবহার করে স্ট্রিং থেকে ডেটা পড়া (istringstream) এবং স্ট্রিং-এ ডেটা লেখা (ostringstream) করা যায়। এগুলো প্রোগ্রামারদের স্ট্রিং ম্যানিপুলেশন এবং ডেটা প্রসেসিং আরও সহজ করতে সাহায্য করে।
১. istringstream এর ব্যবহার
istringstream ক্লাসটি মূলত স্ট্রিং থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়। এটি স্ট্রিংয়ের ডেটা স্ট্রিমের মতো ব্যবহার করে, যেটি থেকে বিভিন্ন ডেটা টাইপে রূপান্তর করে ডেটা পড়া যায়।
উদাহরণ:
#include <iostream>
#include <sstream> // sstream ইনক্লুড করতে হবে
#include <string>
int main() {
std::string str = "10 20 30";
std::istringstream iss(str); // istringstream অবজেক্ট তৈরি
int num;
while (iss >> num) { // স্ট্রিং থেকে প্রতিটি সংখ্যা পড়া
std::cout << num << std::endl;
}
return 0;
}এখানে, istringstream স্ট্রিং str থেকে এক এক করে ডেটা পড়ে এবং প্রতিটি সংখ্যা num ভেরিয়েবলে সঞ্চয় করে। এটি মূলত স্ট্রিং থেকে আলাদা করে ভিন্ন ডেটা টাইপে রূপান্তরের জন্য উপকারী।
২. ostringstream এর ব্যবহার
ostringstream ক্লাসটি মূলত স্ট্রিংয়ে ডেটা লেখার জন্য ব্যবহৃত হয়। এটি এক বা একাধিক ডেটা টাইপকে একটি স্ট্রিংয়ে সংযুক্ত করে এবং পরে স্ট্রিং আকারে সেই ডেটা রিটার্ন করে।
উদাহরণ:
#include <iostream>
#include <sstream> // sstream ইনক্লুড করতে হবে
#include <string>
int main() {
std::ostringstream oss; // ostringstream অবজেক্ট তৈরি
int a = 10;
double b = 20.5;
std::string str = "Hello";
oss << a << " " << b << " " << str; // বিভিন্ন ডেটা oss এ লেখা
// oss কে স্ট্রিং এ রূপান্তর করা এবং আউটপুট
std::cout << oss.str() << std::endl;
return 0;
}এখানে, ostringstream বিভিন্ন ডেটা টাইপকে একটি স্ট্রিংয়ে সংযুক্ত করে রাখে, এবং শেষে oss.str() ফাংশনের মাধ্যমে পুরো স্ট্রিংটি রিটার্ন করে।
৩. stringstream এর ব্যবহার
stringstream একটি যৌথ ক্লাস যা istringstream এবং ostringstream উভয়ের সুবিধা প্রদান করে। এটি স্ট্রিং থেকে ডেটা পড়া এবং লেখা উভয় কাজের জন্য ব্যবহৃত হয়।
উদাহরণ:
#include <iostream>
#include <sstream> // sstream ইনক্লুড করতে হবে
#include <string>
int main() {
std::stringstream ss; // stringstream অবজেক্ট তৈরি
ss << "42"; // স্ট্রিংয়ে ডেটা লেখা
int number;
ss >> number; // স্ট্রিং থেকে ডেটা পড়া
std::cout << "The number is: " << number << std::endl;
return 0;
}এই উদাহরণে, stringstream একই স্ট্রিমের মধ্যে লেখা ও পড়ার কাজ করতে ব্যবহৃত হয়েছে, যা প্রায়শই ডেটা প্রক্রিয়াকরণে প্রয়োজন হয়।
স্ট্রিং স্ট্রিমের ব্যবহার ক্ষেত্রে
- স্ট্রিং থেকে ডেটা পড়া:
istringstreamব্যবহার করে একটি স্ট্রিং থেকে বিভিন্ন ডেটা টাইপে ডেটা পড়া যেতে পারে। যেমন স্পেস দিয়ে পৃথক করা মানগুলো পৃথকভাবে প্রক্রিয়া করা। - ফরম্যাটিং:
ostringstreamব্যবহার করে ডেটা বিভিন্ন ফরম্যাটে সাজিয়ে স্ট্রিং আকারে সংরক্ষণ করা যায়। - কনভার্সন: স্ট্রিং থেকে সংখ্যা বা সংখ্যা থেকে স্ট্রিংয়ে রূপান্তর করতে
istringstreamএবংostringstreamউভয়ই কার্যকর।
উদাহরণ: স্ট্রিং থেকে ভিন্ন ডেটা টাইপে রূপান্তর
নিচের উদাহরণটি দেখায় কিভাবে একটি স্ট্রিং থেকে বিভিন্ন ডেটা টাইপে রূপান্তর করা যায়:
#include <iostream>
#include <sstream> // sstream ইনক্লুড করতে হবে
#include <string>
int main() {
std::string str = "123 45.67 Hello";
std::istringstream iss(str);
int intValue;
double doubleValue;
std::string strValue;
iss >> intValue >> doubleValue >> strValue;
std::cout << "Integer: " << intValue << std::endl;
std::cout << "Double: " << doubleValue << std::endl;
std::cout << "String: " << strValue << std::endl;
return 0;
}এই উদাহরণে, istringstream স্ট্রিং str থেকে int, double, এবং string টাইপের ডেটা পৃথকভাবে পড়ে এবং সংশ্লিষ্ট ভেরিয়েবলে সংরক্ষণ করে। এটি স্ট্রিং থেকে ডেটা প্রসেস করার একটি সহজ উপায় প্রদান করে।
String Streams প্রোগ্রামারদের স্ট্রিং থেকে ডেটা প্রসেস করতে এবং ডেটাকে স্ট্রিংয়ে ফরম্যাট করতে সহায়ক একটি শক্তিশালী টুল, যা C++ এ ডেটা ম্যানিপুলেশনের কাজ সহজ করে তোলে।
Read more