/* writeout.cpp Written July 2009 by John Bell to illustrate output options */ #include #include #include using namespace std; void writeout( ostream &out, int data ); int main( void ) { bool done; char choice; int n; string filename; ofstream fout; cout << "\nThis program demonstrates output to various ostreams\n"; cout << "Written July 2009 by John Bell for CS 109\n"; while( true ) { cerr << "\nEnter an integer, zero to quit: "; cin >> n; if( !n ) { cerr << "\nZero read. Exiting.\n\n"; return 0; } done = false; while( !done ) { cerr << "\nWhere would you like your output written? \n\n"; cerr << "\tO - Standard output ( cout )\n"; cerr << "\tE - Standard error ( cerr )\n"; cerr << "\tF - A file ( to be named. )\n"; cerr << "\tQ - Quit the program.\n"; cerr << "\nPlease enter your choice: "; cin >> choice; switch( choice ) { case 'o': case 'O': cout << "\nWriting to cout:\n"; writeout( cout, n ); done = true; break; case 'e': case 'E': cerr << "\nWriting to cerr:\n"; writeout( cerr, n ); done = true; break; case 'f': case 'F': cerr << "\n\tEnter a file name: "; cin >> filename; fout.open( filename.c_str( ) ); if( !fout ) { cerr << "Error opening " << filename << ". Please try again.\n"; fout.clear( ); break; } fout << "\nWriting to a file:\n"; writeout( fout, n ); fout.close( ); done = true; break; case 'q': case 'Q': cerr << "\nThanks for playing.\n\n"; exit( 0 ); default: cerr << "\nInvalid choice. Try again.\n"; break; } // switch } // while not done cerr << "\nOutput written. Continuing.\n"; } // while true ( while not read a zero yet ) // The following code cannot actually ever be reached. cerr << "Zero read. Exiting.\n\n"; return 0; } // main void writeout( ostream &out, int data ) { out << "Function writout outputing " << data << endl; return; }