Hi,
I was hoping to get some help to understand why I have coded this so poorly. I have re written the code below to demonstrate the problem I face. A really good indicator that something is wrong is the fact that it crashes 50% during run time.
I would like to know why it crashes half the time ? what conditions had changed to make it execute okay the other times.
My main problem is that I had thought this had successfully written to file. As i have tested, by reading it back.
But if I remove my output to file code and only try to import my file (previously created) it recognizes there are two elements but can't output its data.
I am using code::blocks 10.05.
btw, I was only wanting to do this as a learning experience with binary files I do understand I could use a text file. Should I not be using binary files with string.
Many thanks in advance for your help.
Code:#include <iostream> #include <vector> #include <fstream> // Demonstrating my problem with reading from binary from file using namespace std; int main() { vector<string> newBuffer; // will output file from here vector<string> tempBuffer; // will input file into here string testing = "hello world\n"; tempBuffer.push_back(testing); tempBuffer.push_back(testing); // output to file ///* ofstream fout ("file1", ios::binary); if(!fout) { cout << "unable to open file\n"; } fout.write( (char*) &tempBuffer,sizeof tempBuffer); // casting char* fout.close(); tempBuffer.clear(); //*/ // read from file put into new vector ifstream fin ("file1", ios::binary); if(!fin) { cout << "unable to open file\n"; } fin.read( (char*) &newBuffer,sizeof newBuffer); fin.close(); // reading new vector cout << "newBuffer size " << newBuffer.size() << "\n"; for (unsigned short x =0;x<newBuffer.size();x++) cout << (string) newBuffer[x]; newBuffer.clear(); return 0; }