Я написал код для хранения информации о студенте в двоичном файле, а также получаю информацию по мере необходимости. Но я не получаю желаемого результата. Когда я пытаюсь прочитать информацию о студенте из файла student.bin, в поле имени всегда отображается NULL, а поле roll - последний введенный номер рулона. Что здесь происходит?Двоичный файл ввода/вывода в C++
#include <bits/stdc++.h>
using namespace std;
class student{
public:
string name;
int roll;
};
int main(){
fstream file("student.bin", ios::in | ios::out | ios::binary);
int written = 0;
while(1){
int choice;
student a;
int i;
cout << "0. Exit\n1. Write\n2. Read\nEnter Choice : ";
cin >> choice;
switch(choice){
case 1:
cout << "Enter name & roll : ";
cin >> a.name >> a.roll;
cout << "You entered " << a.name << " " << a.roll << endl;
cout << "Enter the index : ";
cin >> i;
if(i > written){
cout << "This index doesnt exist !" << endl;
break;
}
file.seekp(i * sizeof(student), ios::beg);
file.write((char*) &a, sizeof(student));
written++;
break;
case 2:
cout << "Enter index : ";
cin >> i;
file.seekg(i * sizeof(student), ios::beg);
file.read((char*) &a, sizeof(student));
cout << "Name : " << a.name << " Roll : " << a.roll << endl;
break;
case 0:
exit(0);
default:
cout << "Wrong Choice !" << endl;
break;
}
}
file.close();
}
Я думаю, сохранение 'std :: string', которое может использовать указатели во внутреннем, в файл не очень хорошо. – MikeCAT
'#include' Где люди продолжают получать эту идею? –
Возможный дубликат [Как написать std :: string в файл?] (Http://stackoverflow.com/questions/15388041/how-to-write-stdstring-to-file) – MikeCAT