二进制读写的问题
调试时,到的这一条语句st.update(age,name);出现错误,恳请各位大侠指出错误。
原意是想更新第一条记录的,可是老出现错误。
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
class student
{
private:
int age; //年龄
string name; //姓名
public:
student()=default;
student(int a,string n):age(a),name(n){}
void update(int a,string n) //更新学生数据
{
age=a;
name=n;
}
friend ostream& operator<<(ostream &os,student stu) //重载==操作符
{
os<<"age : "<<stu.age<<ends<<"name : "<<stu.name<<endl;
}
};
void print(fstream &f) //打印所有数据
{
f.seekg(0,f.end);
int n=f.tellg()/sizeof(student);
f.seekg(0,f.beg);
student st;
for(int i=0;i<n;i++)
{
f.read((char*)&st,sizeof(student));
cout<<st;
}
}
int main(int argc, char** argv)
{
fstream f("test.dat",ios::in|ios::out|ios::trunc|ios::binary);
if(!f)
{
cerr<<"file can't open!"<<endl;
exit(-1);
}
student st(18,"nobody");
for(int i=0;i<5;i++) //初始化5条记录
{
f.write((char*)&st,sizeof(student));
}
print(f);
int age;string name;
cout<<"input age,name to update"<<endl;
cin>>age>>name;
st.update(age,name);
f.seekg(0*sizeof(student),f.beg);
f.write((char*)&st,sizeof(student));
print(f);
return 0;
}
原意是想更新第一条记录的,可是老出现错误。
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
class student
{
private:
int age; //年龄
string name; //姓名
public:
student()=default;
student(int a,string n):age(a),name(n){}
void update(int a,string n) //更新学生数据
{
age=a;
name=n;
}
friend ostream& operator<<(ostream &os,student stu) //重载==操作符
{
os<<"age : "<<stu.age<<ends<<"name : "<<stu.name<<endl;
}
};
void print(fstream &f) //打印所有数据
{
f.seekg(0,f.end);
int n=f.tellg()/sizeof(student);
f.seekg(0,f.beg);
student st;
for(int i=0;i<n;i++)
{
f.read((char*)&st,sizeof(student));
cout<<st;
}
}
int main(int argc, char** argv)
{
fstream f("test.dat",ios::in|ios::out|ios::trunc|ios::binary);
if(!f)
{
cerr<<"file can't open!"<<endl;
exit(-1);
}
student st(18,"nobody");
for(int i=0;i<5;i++) //初始化5条记录
{
f.write((char*)&st,sizeof(student));
}
print(f);
int age;string name;
cout<<"input age,name to update"<<endl;
cin>>age>>name;
st.update(age,name);
f.seekg(0*sizeof(student),f.beg);
f.write((char*)&st,sizeof(student));
print(f);
return 0;
}
...全文
相关推荐
python读写二进制文件的方法
**数据格式**:当使用`struct`模块时,确保格式字符串正确无误,这直接影响到数据的正确读写。3. **文件关闭**:完成读写操作后,记得关闭文件,以避免内存泄漏或其他问题。4.
C#二进制读写操作
在实际应用中,理解二进制数据的读写流程、处理方式以及可能遇到的问题,对于编写高效、可靠的代码至关重要。
二进制文件读写器
**错误处理**:读写过程中可能出现各种错误,如文件不存在、权限问题、磁盘空间不足等,需要编写适当的错误处理代码来确保程序的健壮性。二进制文件写入则涉及以下步骤:1.
结构体序列化读写二进制文件类
以下是对"结构体序列化读写二进制文件类"这一主题的详细解释。
C#实现的基于二进制读写文件操作示例
在文件操作中,我们需要注意文件的编码问题。在读写文件时,我们需要确保文件的编码正确性。我们可以使用`Encoding`类来实现文件的编码和解码。本示例展示了C#语言中基于二进制读写文件操作的实现方法。


新手乐园
