1: //textfile_append.cpp 3: #include <iostream> 4: #include <fstream> 5: #include <vector> 6: #include <algorithm> 7: #include <cstdlib> 8: using namespace std; 10: int main() 11: { 12: cout << "\nThis program illustrates how to append new data to an " 13: "already-existing\ntextfile from within a C++ program. It also " 14: "illustrates the difference\nbetween overwriting an already-" 15: "existing file, and appending something\nto that file."; 16: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 18: int odds[5] = {1, 3, 5, 7, 9}; 19: int evens[5] = {2, 4, 6, 8, 10}; 20: vector<int> v(5); 21: fstream file; 23: cout << "\nFirst we copy odd values into a vector and display to " 24: "confirm:\n"; 25: copy(odds, odds+5, v.begin()); 26: copy(v.begin(), v.end(), ostream_iterator<int>(cout, " ")); 27: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 29: cout << "\nNext we copy the same odd values from the vector to a " 30: "file, \nand display the file contents to confirm:\n"; 31: file.open("textfile_append.out", ios::out | ios::trunc); 32: copy(v.begin(), v.end(), ostream_iterator<int>(file, " ")); 33: file << endl; 34: file.close(); file.clear(); //Note this important "idiom". 35: system("type textfile_append.out"); system("pause"); //non-portable! 37: cout << "\nNow we overwrite the odd values in the vector with even " 38: "values, \nthen display the contents of the vector again to " 39: "confirm:\n"; 40: copy(evens, evens+5, v.begin()); 41: copy (v.begin(), v.end(), ostream_iterator<int>(cout, " ")); 42: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 44: cout << "\nThen we overwrite the file of odd values with a file of " 45: "even values,\nand display the file contents again to confirm:\n"; 46: file.open("textfile_append.out", ios::out | ios::trunc); 47: copy(v.begin(), v.end(), ostream_iterator<int>(file, " ")); 48: file << endl; 49: file.close(); file.clear(); 50: system("type textfile_append.out"); system("pause"); //non-portable! 52: cout << "\nFinally, we copy the odd values back into the vector, and " 53: "this time we append\nthe contents of the vector to the end of the " 54: "file and display the file one more\ntime to show that it now " 55: "contains both the even and the odd values.\n"; 56: copy(odds, odds+5, v.begin()); 57: file.open("textfile_append.out", ios::out | ios::app); 58: copy(v.begin(), v.end(), ostream_iterator<int>(file, " ")); 59: file << endl; 60: file.close(); file.clear(); 61: system("type textfile_append.out"); system("pause"); //non-portable! 62: }