-iostream- 2018-03-22 11:41 采纳率: 100%
浏览 4456
已采纳

C++中使用二进制文件保存和读取结构体的问题

为了了解书中的代码,自己编写了下面这段简单的测试代码。
#include
#include
#include

struct Test
{
    int key;
    std::string data;
};

int main()
{
    Test test;
    test.key = 1;
    test.data = "Anthony";
    std::ofstream fout("D:\\Data.dat", std::ios_base::out | std::ios_base::binary);
    fout.write((char*)&test, sizeof Test);
    fout.close();
    std::ifstream fin("D:\\Data.dat", std::ios_base::in | std::ios_base::app | std::ios_base::binary);
    Test test_1;
    fin.seekg(0);
    fin.read((char*)&test_1, sizeof Test);
    std::cout << test_1.key << std::endl;
    std::cout << test_1.key << std::endl;
    std::cout << test_1.data << std::endl;
  std::cout << test_1.data << std::endl;

    system("pause");
    return 0;
}

这段代码编译没有任何问题,但是出现了运行错误(CE)。而且经调试发现错误实在程序执行return 0;之后才发生的。程序运行截图如下。
运行代码后如下:
运行代码后
再按任意键后如下:
按任意键后

调试后发现的异常为:0x00088538 处(位于 FileStruct.exe 中)引发的异常: 0xC0000005: 写入位置 0xDDDDDDDD 时发生访问冲突。****

  • 写回答

3条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 普罗米修斯Prometheus监控系统的几个问题调研
      • ¥15 pmp项目管理干系人分析
      • ¥15 请问DenseNet图像输入大小是否是固定的?
      • ¥15 template模板的参数问题
      • ¥15 查找处理学生信息问题,含多个文件,显示问题是无法调用其中一个文件
      • ¥15 simulink生成代码后提示告警
      • ¥16 jieba提取高频词,生成文件是空的
      • ¥15 怎么读取服务器中的文件去配置mongo的连接
      • ¥20 Python如何统计文本中两字及以上的词语个数
      • ¥15 MapReduce自定义对象怎么写