所以我对一个对象进行了序列化,但是我遇到了几个问题。 这是代码:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class MyTest
{
private:
string test;
public:
MyTest():test(""){};
void setTest(const string& test) {this->test = test;};
string getTest() const {return this->test;};
};
void writeToFile(const MyTest& m)
{
ofstream ofs("data.mbp", ios::app|ios::binary);
ofs.clear();
ofs.write((char *)&m, sizeof(m));
ofs.flush();
ofs.close();
return;
};
MyTest& readTest(MyTest& m,int num)
{
ifstream ifs;
ifs.open("data.mbp", ios::in|ios::binary);
for ( int i = 1 ; i <= num ; i++)
ifs.read((char *)&m, sizeof(m));
return m;
}
int main(int argc,char* argv[])
{
MyTest m,t;
m.setTest("Hello");
writeToFile(m);
t.setTest("World");
writeToFile(t);
t = readTest(t,1);
cout << t.getTest() << endl;
m = readTest(m,2);
cout << m.getTest() << endl;
return 0;
}
问题是我不知道如何在二进制文件中写两个或更多对象,之后我怎么读它们。 有人知道吗?
提前致谢。
答案 0 :(得分:5)
我建议你使用Boost - Serialization来序列化C ++中的对象:http://www.boost.org/libs/serialization/
答案 1 :(得分:2)
有很多不同的方法可以做到这一点。您需要先选择文件格式。首先考虑XML。复杂数据结构的序列化最好基于一些现有的库而不是从头开始编写。在Inet上搜索这些库。