【发布时间】:2013-08-12 12:13:12
【问题描述】:
airport air(1,2,3); //an airport constructor
ofstream myfile;
myfile.open("rishab",ios::app||ios::binary);
myfile.write((char*)air,sizeof(airport);
myfile.close();
在我的程序中多次调用此类命令以获取许多机场的信息。基本上二进制文件充满了机场。 稍后我需要将所有这些机场读入一个数组。如何读取文件以获取机场数组。
抱歉,如果这个问题太基本了。我在高中学习指针和最短路径图。
【问题讨论】:
-
这取决于
airport类的定义。 -
类机场 { int planeCapacity; int acceptPlanesFrom; //和一些其他的公共整数:构造函数..访问器方法 };就是这样。
-
我不知道是什么让人们认为您的输入文件包含对象的有效二进制转储。你没有这么说。大多数答案的方式使这个 IMO 有风险的假设。他们还提出了在
c中使用并在一定程度上有效但已过时的方法。如果您在c++并处理对象,那么迟早会非常糟糕。airport中的最小更改将破坏兼容性。你能告诉输入文件是如何创建的吗?如果不知道存储方法,您就无法真正设计阅读方法。它们是强耦合的。airport的定义也很有用。 -
ios::app||ios::binary是逻辑或结果是 0 或 1。你想要按位或ios::app|ios::binary