Help with binary I/O
Hi there,
I'm trying to save a vector data structure to a binary file, then read
it back and see if all the contents are intact. So I'm trying to
following code below :
#include "stdafx.h"
#include <stdio.h>
#include <vector>
#include <iostream>
#include <fstream>
using namespace std;
void main() {
//
// Create a test vector of integers and populate with test data
//
vector<int> int_ls;
int_ls.push_back(100);
int_ls.push_back(200);
int_ls.push_back(300);
int_ls.push_back(400);
int_ls.push_back(500);
//
// Dump the contents of the integer vector to a binary file
//
fstream binfile("fstream.out", ios::out|ios::binary);
binfile.seekp(0, ios::end);
binfile.write((char*)&int_ls,sizeof(int_ls));
binfile.close();
//
// Re-open the binary file and this time read the values and
store again in vector structure
//
vector<int> int_ls2;
fstream binfile2("fstream.out", ios::out|ios::in|ios::binary);
binfile2.seekg(0, ios::beg);
while (!binfile2.eof()) {
binfile2.read((char*)&int_ls2, sizeof(int_ls2));
}
binfile2.close();
//
// Now let's display what we just read in
//
int DATA_SIZE = int_ls2.size();
for (i=0; i<DATA_SIZE; i++) {
printf("\n int_ls2[%d] --> %d", i, int_ls2[i]);
};
}
** The above code manages to save to a file and even retrieve all the
values, but somehow I get an assert before it terminates.
** More info: I'm compiling it using Visual C++ 2008 as a Console
Application.
Thanks in Advance,
Joseph