---+++ Files ---+++ Simple File Input/Output <sticky> %CODE{"c++"}% //DISPLAY 6.1 Simple File Input/Output //Reads three numbers from the file infile.dat, sums the numbers, //and writes the sum to the file outfile.dat. //(A better version of this program will be given in Display 6.2.) #include <fstream> int main( ) { using namespace std; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); out_stream.open("outfile.dat"); int first, second, third; in_stream >> first >> second >> third; out_stream << "The sum of the first 3\n" << "numbers in infile.dat\n" << "is " << (first + second + third) << endl; in_stream.close( ); out_stream.close( ); return 0; } %ENDCODE%</sticky> ---+++ File I/O with Checks on open <sticky> %CODE{"c++"}% //DISPLAY 6.2 File I/O with Checks on open //Reads three numbers from the file infile.dat, sums the numbers, //and writes the sum to the file outfile.dat. #include <fstream> #include <iostream> #include <cstdlib> int main( ) { using namespace std; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); if (in_stream.fail( )) { cout << "Input file opening failed.\n"; exit(1); } out_stream.open("outfile.dat"); if (out_stream.fail( )) { cout << "Output file opening failed.\n"; exit(1); } int first, second, third; in_stream >> first >> second >> third; out_stream << "The sum of the first 3\n" << "numbers in infile.dat\n" << "is " << (first + second + third) << endl; in_stream.close( ); out_stream.close( ); return 0; } %ENDCODE%</sticky> ---+++ Appending to a File <sticky> %CODE{"c++"}% //DISPLAY 6.3 Appending to a File //Appends data to the end of the file data.txt. #include <fstream> #include <iostream> int main( ) { using namespace std; cout << "Opening data.txt for appending.\n"; ofstream fout; fout.open("data.txt", ios::app); if (fout.fail( )) { cout << "Input file opening failed.\n"; exit(1); } fout << "5 6 pick up sticks.\n" << "7 8 ain't C++ great!\n"; fout.close( ); cout << "End of appending to file.\n"; return 0; } %ENDCODE%</sticky> ---+++ Inputting a File Name <sticky> %CODE{"c++"}% //DISPLAY 6.4 Inputting a File Name //Reads three numbers from the file specified by the user, sums the numbers, //and writes the sum to another file specified by the user. #include <fstream> #include <iostream> #include <cstdlib> int main( ) { using namespace std; char in_file_name[16], out_file_name[16]; ifstream in_stream; ofstream out_stream; cout << "I will sum three numbers taken from an input\n" << "file and write the sum to an output file.\n"; cout << "Enter the input file name (maximum of 15 characters):\n"; cin >> in_file_name; cout << "Enter the output file name (maximum of 15 characters):\n"; cin >> out_file_name; cout << "I will read numbers from the file " << in_file_name << " and\n" << "place the sum in the file " << out_file_name << endl; in_stream.open(in_file_name); if (in_stream.fail( )) { cout << "Input file opening failed.\n"; exit(1); } out_stream.open(out_file_name); if (out_stream.fail( )) { cout << "Output file opening failed.\n"; exit(1); } int first, second, third; in_stream >> first >> second >> third; out_stream << "The sum of the first 3\n" << "numbers in " << in_file_name << endl << "is " << (first + second + third) << endl; in_stream.close( ); out_stream.close( ); cout << "End of Program.\n"; return 0; } %ENDCODE%</sticky> ---+++ Formatting Output <sticky> %CODE{"c++"}% //DISPLAY 6.6 Formatting Output //Illustrates output formatting instructions. //Reads all the numbers in the file rawdata.dat and writes the numbers //to the screen and to the file neat.dat in a neatly formatted way. #include <iostream> #include <fstream> #include <cstdlib> #include <iomanip> using namespace std; void make_neat(ifstream& messy_file, ofstream& neat_file, int number_after_decimalpoint, int field_width); //Precondition: The streams messy_file and neat_file have been connected //to files using the function open. //Postcondition: The numbers in the file connected to messy_file have been //written to the screen and to the file connected to the stream neat_file. //The numbers are written one per line, in fixed-point notation (that is, not in //e-notation), with number_after_decimalpoint digits after the decimal point; //each number is preceded by a plus or minus sign and each number is in a field //of width field_width. (This function does not close the file.) int main( ) { ifstream fin; ofstream fout; fin.open("rawdata.dat"); if (fin.fail( )) { cout << "Input file opening failed.\n"; exit(1); } fout.open("neat.dat"); if (fout.fail( )) { cout << "Output file opening failed.\n"; exit(1); } make_neat(fin, fout, 5, 12); fin.close( ); fout.close( ); cout << "End of program.\n"; return 0; } //Uses iostream, fstream, and iomanip: void make_neat(ifstream& messy_file, ofstream& neat_file, int number_after_decimalpoint, int field_width) { neat_file.setf(ios::fixed); neat_file.setf(ios::showpoint); neat_file.setf(ios::showpos); neat_file.precision(number_after_decimalpoint); cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.setf(ios::showpos); cout.precision(number_after_decimalpoint); double next; while (messy_file >> next) { cout << setw(field_width) << next << endl; neat_file << setw(field_width) << next << endl; } } %ENDCODE%</sticky> ---+++ <sticky> %CODE{"c++"}% %ENDCODE%</sticky> ---+++ <sticky> %CODE{"c++"}% %ENDCODE%</sticky>
Edit
|
Attach
|
Watch
|
P
rint version
|
H
istory
:
r5
|
r4
<
r3
<
r2
<
r1
|
B
acklinks
|
V
iew topic
|
Raw edit
|
More topic actions...
Topic revision: r1 - 2015-11-12
-
JimSkon
Home
Site map
KatiWeb web
KenyonCpp web
MSSC web
Main web
SCMP118 web
Fall2016 web
SCMP391 web
Sandbox web
TWiki web
Fall2016 Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
Edit
Attach
Copyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback