gpt4 book ai didi

c++ - 我已经编写了一个程序来管理学生数据和重载运算符,但出现错误 free() : invalid pointer

转载 作者:太空狗 更新时间:2023-10-29 21:09:47 56 4
gpt4 key购买 nike

class student
{
private:
int RollNo;
string Name;
public:
student(){}
student(int rn, string n)
{
RollNo = rn;
Name = n;
}
~student(){}
int getRollNo() { return RollNo; }
string getName() { return Name; }
friend ifstream& operator>>(ifstream & ifs, student &s);
friend ofstream& operator<<(ofstream & ofs, student &s);
friend istream& operator>>(istream & is, student &s);
friend ostream& operator<<(ostream & os, student &s);

};

//重载运算符>>用于使用输入从文件中读取

ifstream& operator>>(ifstream &ifs, student &s)
{
file stream object
ifs.read((char*) &s,sizeof(s));
return ifs;
}

//重载运算符<<用于写入文件输出文件流对象

ofstream& operator<<(ofstream & ofs, student &s)
{
ofs.write((char*) &s,sizeof(s));
return ofs;
}

//重载运算符<<以使用其

写入输出流
ostream& operator<<(ostream & os, student &s)
{
object and student object
os<<"Roll No. = "<<s.RollNo<<endl;
os<<"Name = "<<s.Name<<endl;
return os;
}

//重载运算符>>使用

写入学生对象
istream& operator>>(istream & is, student &s)
{
inputstream object
cout<<"Enter R0ll No.: ";
is>>s.RollNo;
cout<<"Enter Name: ";
is>>s.Name;
return is;
}

//主 block

int main()
{
student s1(112,"abhimanyu"),s2(123,"abc");
student temp;
ofstream ofileobject("abc.txt",ios:: out | ios::trunc);
ofileobject<<s1<<s2;
ofileobject.close();
ifstream ifileobject("abc.txt",ios::in);
ifileobject>>temp;
cout<<temp;
ifileobject>>temp;
cout<<temp;
ifileobject.close();

}

我正在开发一个程序来读取和写入学生数据插入和提取运算符重载的文件istream/ostream 和 ifstream/ofstream 但我有一个错误“munmap_chunk():无效指针”

我很努力但无法得到这个无效指针的解决方案

最佳答案

您不能使用 of.write((char*)&obj,sizeof(obj)); 从/向文件读取/写入非 POD 对象,如 std::string

您需要按值正确地读/写此类对象,例如:

of.write(str.data(), str.length() + 1);

其中 +1 用于写入 '\0'终结者。或者只是使用重载的对象 <<运算符(operator)。即:

of << str;

编辑:

所以基本上你的文件运算符(operator)应该是这样的:

ifstream& operator>>(ifstream &ifs, student &s)
{
ifs >> s.RollNo >> s.Name;
return ifs;
}

ofstream& operator<<(ofstream & ofs, student &s)
{
ofs << s.RollNo << s.Name;
return ofs;
}

关于c++ - 我已经编写了一个程序来管理学生数据和重载运算符,但出现错误 free() : invalid pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57157941/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com