বাইনারি ফাইল রাইটিং
C++-এ বাইনারি ফাইলে ডেটা লিখতে ofstream::write() মেথড ব্যবহার করা হয়। এটি নির্দিষ্ট বাইট সংখ্যা লিখে।
সিনট্যাক্স
ostream& write(const char* buffer, int size);
অ্যালগরিদম
- স্ট্রাকচার ডিফাইন করুন (যেমন
Student)। ios::binaryমোডে ফাইল খুলুন।- এরর চেক করুন।
- ডেটা ইনিশিয়ালাইজ করুন।
write((char*)&obj, sizeof(obj))কল করুন।- ফাইল ক্লোজ করুন এবং এরর চেক করুন।
উদাহরণ কোড
#include <iostream>
#include <fstream>
using namespace std;
struct Student {
int roll_no;
string name; // নোট: string বাইনারি লিখতে সমস্যা হয় (পয়েন্টার থাকে)। ফিক্সড char array ভালো।
};
int main() {
ofstream wf("student.dat", ios::out | ios::binary);
if (!wf) { cerr << "Cannot open file!"; return 1; }
Student wstu[3] = {{1, "Ram"}, {2, "Shyam"}, {3, "Madhu"}};
for (int i = 0; i < 3; i++)
wf.write((char*)&wstu[i], sizeof(Student));
wf.close();
if (!wf.good()) { cerr << "Write error!"; return 1; }
cout << "Student's Details:\n";
for (int i = 0; i < 3; i++)
cout << "Roll: " << wstu[i].roll_no << ", Name: " << wstu[i].name << endl;
return 0;
}
আউটপুট
Student's Details: Roll No: 1 Name: Ram Roll No: 2 Name: Shyam Roll No: 3 Name: Madhu
সাবধানতা: std::string বাইনারি লিখলে সঠিক কাজ করবে না কারণ এটি ডাইনামিক মেমরি ম্যানেজ করে। বাইনারি সিরিয়ালাইজেশনের জন্য ফিক্সড সাইজ টাইপ (যেমন char name[50]) বা সিরিয়ালাইজেশন লাইব্রেরি ব্যবহার করুন।