0x5DF9CCC8处出现未处理的异常
Unhandled exception at 0x5DF9CCC8
当我运行此代码时,写入时一切都很顺利,但当我按2读取时,一切都很好,但当它完成读取文件(显示函数)时,会弹出一个问题,显示"0x5DF9CCC8处未处理的异常",并带有break,continue选项。从我的搜索中,我认为问题来自一个指向Null的指针,但我不知道如何解决它。这是代码
class person{
public :
string name;
int id ;
int age ;
void person :: show();
void person :: add_menue();
void person :: insert_data();
void person :: show_data();
};
person personobject;
void person :: add_menue()
{
cout << "Please Enter Name ID Age :" << endl;
cin >> name >> id >> age ;
}
ofstream file;
void person::show()
{
cout<<"Age => "<<age<<endl;
cout<<"Name => "<<name<<endl;
cout<<"ID => "<<id<<endl;
}
void person :: insert_data()
{
ofstream file;
file.open("binary.dat",ios::app| ios::binary);
personobject.add_menue();
file.write((char*)&personobject, sizeof(personobject));
file.close();
}
void person :: show_data()
{
ifstream file;
file.open("binary.dat",ios::in| ios::binary);
if(!file)
{
cout<<"File not Found";
}
else
{
file.read((char*)&personobject, sizeof(personobject));
while(!file.eof())
{
personobject.show();
cout<<"Press Any Key....For Next Record"<<endl;
getchar();
file.read((char*)&personobject, sizeof(personobject));
}
}
file.close();
}
void main ()
{
int choice;
cout << "1 - to write n2 - to read" << endl;
cin >> choice;
if (choice==1)
{
person f;
f.insert_data();
}
if (choice==2)
{
person a;
a.show_data();
system ("pause");
}
}
因为您使用的是字符串对象,而不是纯字符数组,所以您不能只将整个类类型转换为char*并将其写入文件(这本身就是一种糟糕的方法。如果您更改参数的顺序并尝试加载一个旧文件会怎么样?)。
在insert_data函数中,单独编写每个变量,而不是强制转换整个类。你可以先写年龄和id,你知道这将占用8个字节,所以剩下的就是可以在read_data函数中加载回字符串对象的名称的大小。
相关文章:
- 如何修复链表类实现的未处理异常0xDDDDDDDD
- 在信号处理程序中捕获C++未处理的异常并恢复应用程序
- 在C++程序中使用的迭代器中未处理的异常
- 在 ******.exe 中0x00000000772CA267 (ntdll.dll) 处未处理的异常:0xC0000
- 未处理的异常与 cudaMemcpy2D
- 处理未处理的异常更改C++
- for 循环中未处理的异常
- VisualC++ 2010 有没有办法找出有关未处理异常错误的更多详细信息
- 为什么此代码导致未处理的异常失败
- 在OpenCV_core310.dll中使用findContours函数时,OpenCV引发未处理的异常
- 0x0F50DF58:0xC0000005:访问冲突读取位置0x0047CA04时未处理的异常
- 使用 getline 时未处理的异常
- 错误 : 异常 : 引发未处理的异常: 读取访问冲突.0xDDDDDDDD临时温度
- 核心消息传递中未处理的异常.dll在程序关闭期间
- 在 Hello World.exe 中0x0F828F0E (ucrtbased.dll) 处未处理的异常: 0xC00
- 从向量中删除元素时未处理的异常
- C++ 程序中双链表的未处理异常
- 在 Myfile.exe 中0x00831D39时未处理的异常:0xC00000FD:堆栈溢出(参数:0x0000000
- CUDA 编程未处理的异常和堆栈溢出
- 在多线程c++ 11程序中,当异常未处理时会发生什么