ifstream, ofstream, এবং fstream হলো C++ এ ফাইল হ্যান্ডলিং করার জন্য ব্যবহৃত তিনটি প্রধান ক্লাস, যা fstream লাইব্রেরির অংশ। এগুলোর সাহায্যে ফাইল থেকে ডেটা পড়া, ফাইলে ডেটা লেখা এবং একই সাথে ফাইল পড়া ও লেখা করা যায়।
1. ifstream (Input File Stream)
ifstream ক্লাস ব্যবহার করে ফাইল থেকে ডেটা পড়া হয়। এটি ইনপুট মোডে কাজ করে এবং শুধুমাত্র read অপারেশন পরিচালনা করতে পারে।
উদাহরণ: ifstream এর মাধ্যমে ফাইল থেকে পড়া
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream inputFile("example.txt"); // ফাইল খোলা ifstream অবজেক্ট দিয়ে
if (!inputFile) {
cout << "Error opening file!" << endl;
return 1;
}
string line;
while (getline(inputFile, line)) { // ফাইল থেকে এক লাইন করে পড়া
cout << line << endl;
}
inputFile.close(); // ফাইল বন্ধ করা
return 0;
}
বর্ণনা:
- এখানে
example.txtফাইলটিifstreamঅবজেক্টinputFileব্যবহার করে খোলা হয়েছে। getline()ফাংশনের মাধ্যমে এক লাইন করে পড়া হয়েছে এবং কনসোলে প্রিন্ট করা হয়েছে।- ফাইল অপারেশন শেষে
close()ফাংশন ব্যবহার করে ফাইলটি বন্ধ করা হয়েছে।
2. ofstream (Output File Stream)
ofstream ক্লাস ব্যবহার করে ফাইলে ডেটা লেখা হয়। এটি আউটপুট মোডে কাজ করে এবং শুধুমাত্র write অপারেশন পরিচালনা করতে পারে।
উদাহরণ: ofstream এর মাধ্যমে ফাইলে লেখা
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream outputFile("example.txt"); // ফাইল খোলা ofstream অবজেক্ট দিয়ে
if (!outputFile) {
cout << "Error opening file!" << endl;
return 1;
}
outputFile << "Hello, World!" << endl; // ফাইলে লেখা
outputFile << "C++ File Handling Example." << endl;
outputFile.close(); // ফাইল বন্ধ করা
cout << "Data written to file successfully!" << endl;
return 0;
}
বর্ণনা:
- এখানে
example.txtফাইলটিofstreamঅবজেক্টoutputFileব্যবহার করে খোলা হয়েছে। outputFileব্যবহার করে ফাইলে কিছু টেক্সট লেখা হয়েছে।close()ফাংশন ব্যবহার করে ফাইলটি বন্ধ করা হয়েছে।
3. fstream (File Stream)
fstream ক্লাস ব্যবহার করে একই ফাইলে ইনপুট এবং আউটপুট উভয় ধরনের অপারেশন করা যায়। এটি ইনপুট এবং আউটপুট উভয় মোডে কাজ করতে সক্ষম।
উদাহরণ: fstream এর মাধ্যমে ফাইল পড়া ও লেখা
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream file("example.txt", ios::in | ios::out | ios::app); // ফাইল খোলা fstream অবজেক্ট দিয়ে, ইনপুট, আউটপুট এবং অ্যাপেন্ড মোডে
if (!file) {
cout << "Error opening file!" << endl;
return 1;
}
// ফাইলে লেখা
file << "Adding a new line to the file." << endl;
// ফাইলের শুরুতে যাওয়া
file.seekg(0);
// ফাইল থেকে পড়া
string line;
while (getline(file, line)) {
cout << line << endl;
}
file.close(); // ফাইল বন্ধ করা
return 0;
}
বর্ণনা:
- এখানে
example.txtফাইলটিfstreamঅবজেক্টfileব্যবহার করে খোলা হয়েছে এবং এটি ইনপুট, আউটপুট এবং অ্যাপেন্ড মোডে কাজ করছে। - ফাইলে একটি নতুন লাইন যোগ করা হয়েছে।
seekg(0)ব্যবহার করে ফাইল পয়েন্টারকে শুরুতে নিয়ে গিয়ে ফাইলের ডেটা পড়া হয়েছে।- ফাইল অপারেশন শেষে
close()ফাংশন ব্যবহার করে ফাইলটি বন্ধ করা হয়েছে।
মোড সমূহের সংক্ষিপ্ত বিবরণ
C++ এ ফাইল খোলার সময় বিভিন্ন মোড ব্যবহার করা যায়:
- ios::in: ইনপুট মোড, ফাইল পড়ার জন্য ব্যবহৃত।
- ios::out: আউটপুট মোড, ফাইলে লেখার জন্য ব্যবহৃত।
- ios::app: অ্যাপেন্ড মোড, ফাইলের শেষে নতুন ডেটা যোগ করে।
- ios::trunc: ফাইল খোলার সময় পূর্ববর্তী ডেটা মুছে ফেলে, যা
ios::outএর জন্য ডিফল্ট। - ios::binary: বাইনারি মোডে ফাইল খোলে।
সংক্ষেপে তুলনা
| ক্লাস | কাজ | ব্যবহৃত মোড |
|---|---|---|
ifstream | ফাইল থেকে পড়া (input) | ios::in |
ofstream | ফাইলে লেখা (output) | ios::out, ios::app, ios::trunc |
fstream | ফাইল পড়া এবং লেখা (input/output) | ios::in, ios::out, ios::app, ios::binary |
সারসংক্ষেপ
- ifstream: ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়।
- ofstream: ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়।
- fstream: একই ফাইলে পড়া এবং লেখার জন্য ব্যবহৃত হয়।
ফাইল হ্যান্ডলিংয়ের এই তিনটি ক্লাস ব্যবহার করে ফাইলের সাথে কার্যকরভাবে কাজ করা যায় এবং প্রোগ্রামের আউটপুট সংরক্ষণ বা ইনপুট হিসেবে ব্যবহার করা যায়।