I am trying to write a triple vector to a file and then be able to read back into the data structure afterward. When I try to read the file back after its been saved the first fifty values come out correct but the rest of the values are garbage. I'd be really appreciative if someone could help me out here. Thanks a lot!
File declaration:
fstream memory_file("C:\\Users\\Amichai\\Pictures\\output.txt", ios::in | ios::out); Save function:
void save_training_data(fstream &memory_file, vector<vector<vector<long double> > > &training_data) { int sizeI = training_data.size(); memory_file.write((const char *)&sizeI, sizeof(int)); for (int i=0; i < sizeI; i++) { int sizeJ = training_data[i].size(); memory_file.write((const char *)&sizeJ, sizeof(int)); for (int j=0; j < sizeJ; j++) { int sizeK = training_data[i][j].size(); memory_file.write((const char *)&sizeK, sizeof(int)); for (int k = 0; k < sizeK; k++) { int temp; temp = (int)training_data[i][j][k]; memory_file.write((const char *)&temp, sizeof(int)); } } } } Read function:
void upload_memory(fstream &memory_file, vector<vector<vector<long double> > > &training_data) { memory_file.seekg(ios::beg); int temp=0; int sizeK, sizeJ, sizeI; memory_file.read((char*)&sizeI, sizeof(int)); training_data.resize(sizeI); for (int i=0; i < sizeI; i++) { memory_file.read((char*)&sizeJ, sizeof(int)); training_data[i].resize(sizeJ); for (int j=0; j < sizeJ; j++) { memory_file.read((char*)&sizeK, sizeof(int)); training_data[i][j].resize(sizeK); for (int k = 0; k < sizeK; k++) { memory_file.read((char*)&temp, sizeof(int)); training_data[i][j][k]=temp; } } } }