Step 1: Serializing Built-in DatatypesUltimately, every object consists of built-in data members such as int, bool, char [] and so on. Our first exercise is to write such datatypes to an ofstream (read more on <fstream> file I/O
here). We store the values in their binary format. For this purpose, we use the write() and read() member functions. write() takes the address and the size of a variable and writes its bit pattern to a file stream. read() takes two arguments of type
char * and
long which contain buffer's address and its size in bytes, respectively. The following example demonstrates how to store two integers in an ofstream:
#include <:fstream>:
using namespace std;
int main()
{
int x,y; //mouse coordinates
//..assign values to x and y
ofstream archive("coord.dat", ios::binary);
archive.write(reinterpret_cast(&x), sizeof (x));
archive.write(reinterpret_cast(&x), sizeof (x));
archive.close();
}
The use of reinterpret_cast is necessary because write() takes const char * as its first argument whereas &x and &y are of type int *.
We retrieve the previously stored values as follows:
#include <fstream>
using namespace std;
int main()
{
int x,y;
ifstream archive("coord.dat");
archive.read((reinterpret_cast(&x), sizeof(x));
archive.read((reinterpret_cast(&y), sizeof(y));
}