1: //binary_file5.cpp 2: //Illustrates a binary file of integers: 3: //Creating, then reading and modifying with direct (or "random") access. 5: #include <iostream> 6: #include <fstream> 7: using namespace std; 9: int main() 10: { 11: int NUMBER_OF_BYTES_IN_INT = sizeof(int); 12: fstream file("binary_file5.bin", 13: ios::binary | ios::trunc | ios::in | ios::out); 15: int a[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24}; 16: for (int i=0; i<12; i++) 17: file.write((char *)&a[i], NUMBER_OF_BYTES_IN_INT); 18: cout << "\nThe first 12 positive even integers have been" 19: "\nwritten to a binary file called binary_file5.bin."; 20: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 22: cout << "\nHere are those integers, as read from the file:\n"; 23: file.seekg(0); 24: while (file) 25: { 26: int k; 27: file.read((char *)&k, NUMBER_OF_BYTES_IN_INT); 28: if (file) cout << k << " "; 29: } 30: file.clear(); 31: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 33: cout << "\nNow we read and display the 10th integer, directly from " 34: "the file.\nThen we overwrite that value with its square." 35: "\nFinally, we display all the values again to show the revision."; 36: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 37: file.seekg(9*NUMBER_OF_BYTES_IN_INT, ios::beg); 38: int n; 39: file.read((char *)&n, NUMBER_OF_BYTES_IN_INT); 40: cout << "\nHere's the 10th value: " << n << endl; 41: n *= n; 42: file.seekg(-NUMBER_OF_BYTES_IN_INT, ios::cur); 43: file.write((char *)&n, NUMBER_OF_BYTES_IN_INT); 45: cout << "And here are the integers again, showing the value " 46: "we squared:\n"; 47: file.seekg(0); 48: while (file) 49: { 50: int k; 51: file.read((char *)&k, NUMBER_OF_BYTES_IN_INT); 52: if (file) cout << k << " "; 53: } 54: file.close(); file.clear(); 55: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 56: }