लिखना (Writing)
C++ में बाइनरी फाइल लिखने के लिए write मेथड का उपयोग करें। इसका उपयोग दिए गए स्ट्रीम पर "पुट" पॉइंटर की स्थिति से शुरू करके दिए गए बाइट्स की संख्या लिखने के लिए किया जाता है। यदि पुट पॉइंटर वर्तमान में फाइल के अंत में है तो फाइल बढ़ जाती है। यदि यह पॉइंटर फाइल के मध्य में इंगित करता है, तो फाइल में कैरेक्टर्स नए डेटा से ओवरराइट हो जाते हैं।
यदि फाइल में लिखने के दौरान कोई त्रुटि होती है, तो स्ट्रीम एरर स्टेट में चली जाती है।
write मेथड का सिंटैक्स
ostream& write(const char*, int);
पढ़ना (Reading)
C++ में बाइनरी फाइल पढ़ने के लिए read मेथड का उपयोग करें। यह दिए गए स्ट्रीम से दिए गए बाइट्स की संख्या निकालता है और उन्हें पहले पैरामीटर द्वारा इंगित मेमोरी में रखता है। यदि फाइल में पढ़ने के दौरान कोई त्रुटि होती है, तो स्ट्रीम एरर स्टेट में चली जाती है, और भविष्य के सभी रीड ऑपरेशन विफल हो जाएंगे।
gcount() का उपयोग पहले से पढ़े गए कैरेक्टर्स की संख्या गिनने के लिए किया जा सकता है। फिर clear() का उपयोग स्ट्रीम को उपयोग योग्य स्टेट में रीसेट करने के लिए किया जा सकता है।
read मेथड का सिंटैक्स
istream& read(const char*, int);
एल्गोरिदम
Begin
Student स्ट्रक्चर बनाएं वेरिएबल्स घोषित करने के लिए
बाइनरी फाइल को लिखने के लिए खोलें
फाइल खोलने में कोई त्रुटि है तो चेक करें
वेरिएबल्स को डेटा से इनिशियलाइज़ करें
यदि फाइल सफलतापूर्वक खुलती है, तो write मेथड का उपयोग करके बाइनरी डेटा लिखें
फाइल को लिखने के लिए बंद करें
बाइनरी फाइल को पढ़ने के लिए खोलें
फाइल खोलने में कोई त्रुटि है तो चेक करें
यदि फाइल सफलतापूर्वक खुलती है, तो read मेथड का उपयोग करके बाइनरी डेटा फाइल पढ़ें
फाइल को पढ़ने के लिए बंद करें
कोई त्रुटि है तो चेक करें
डेटा प्रिंट करें
End.
उदाहरण कोड
#include <iostream>
#include <fstream>
using namespace std;
struct Student {
int roll_no;
string name;
};
int main() {
ofstream wf("student.dat", ios::out | ios::binary);
if(!wf) {
cout << "Cannot open file!" << endl;
return 1;
}
Student wstu[3];
wstu[0].roll_no = 1;
wstu[0].name = "Ram";
wstu[1].roll_no = 2;
wstu[1].name = "Shyam";
wstu[2].roll_no = 3;
wstu[2].name = "Madhu";
for(int i = 0; i < 3; i++)
wf.write((char *) &wstu[i], sizeof(Student));
wf.close();
if(!wf.good()) {
cout << "Error occurred at writing time!" << endl;
return 1;
}
ifstream rf("student.dat", ios::in | ios::binary);
if(!rf) {
cout << "Cannot open file!" << endl;
return 1;
}
Student rstu[3];
for(int i = 0; i < 3; i++)
rf.read((char *) &rstu[i], sizeof(Student));
rf.close();
if(!rf.good()) {
cout << "Error occurred at reading time!" << endl;
return 1;
}
cout << "Student's Details:" << endl;
for(int i=0; i < 3; i++) {
cout << "Roll No: " << wstu[i].roll_no << endl;
cout << "Name: " << wstu[i].name << endl;
cout << endl;
}
return 0;
}
आउटपुट
Student's Details: Roll No: 1 Name: Ram Roll No: 2 Name: Shyam Roll No: 3 Name: Madhu