Title: CS 1620
1CS 1620
2- So far this semester
- all input has been from keyboard
- all output has been to computer screen
- these are just two examples of where to
retrieve/send data
3- ifstream Input File Stream
- reads input from the location of your choice
- ifstream is a type
- declare variables of type ifstream
- use variable for file input
4- Steps to read from a file
- declare a variable infile of type ifstream
- call infile.open, and send the filename as its
parameter - check to see if the open command worked with
infile.fail - use infile to read in data
- call infile.close to close the stream
- ifstream infile
- infile.open("prices.dat")
- if (infile.fail())
- cout ltlt "File failed to open"
- ltlt endl
- exit(1)
-
- // read data from infile
- infile.close()
5- ifstream variable
- declared like any other variable
- ifstream infile
- can use any legal variable name that you like
- I will use infile for all of my examples
- ifstream kev // legal, but not a good
choice - kev.open("kev.txt")
- requires includeltfstreamgt
6- .open
- takes a null-terminated character array as input
- string literal
- infile.open("prices.dat")
- character array variable
- char filename "prices.dat"
- infile.open(filename)
- will a string variable work?
- string filename "prices.dat"
- infile.open(filename)
7- c_str
- a string variable does not hold a null-terminated
character array - string data type provides a member function
called c_str() - returns a null-terminated character array
representing the string - to use, just affix .c_str() to the variable name
- string filename "prices.dat"
- infile.open(filename.c_str())
8- .fail
- returns true if the file has been opened, false
otherwise - if (infile.fail())
- cout ltlt "File failed to open"
- ltlt endl
- exit(1)
-
- exit terminates the program, and returns its
argument value to the operating system - must includeltcstdlibgt to use exit
9- .close
- closes the current file stream
- good programming practice to close files when
you're done with them - O/S only allows finite number of open files
infile.close()
10- Example 1 Open a file called "prices.dat". If
the file opens, print the message "File
successfully opened!". If not, print "File
failed to open".
11- Example 1 Open a file called "prices.dat". If
the file opens, print the message "File
successfully opened!". If not, print "File
failed to open".
include ltiostreamgt include ltfstreamgt include
ltcstdlibgt using namespace std int main()
ifstream infile infile.open("prices.dat")
if (infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
12- Example 1 Open a file called "prices.dat". If
the file opens, print the message "File
successfully opened!". If not, print "File
failed to open".
include ltiostreamgt include ltfstreamgt include
ltcstdlibgt using namespace std int main()
ifstream infile infile.open("prices.dat")
if (infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
- Steps to read from a file
- declare a variable infile of type ifsteam
- call infile.open, and send the filename as its
parameter - check to see if the open command worked with
infile.fail - use infile to read in data
- call infile.close to close the stream
13- Example 1 Open a file called "prices.dat". If
the file opens, print the message "File
successfully opened!". If not, print "File
failed to open".
include ltiostreamgt include ltfstreamgt include
ltcstdlibgt using namespace std int main()
ifstream infile infile.open("prices.dat")
if (infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
- Steps to read from a file
- declare a variable infile of type ifsteam
- call infile.open, and send the filename as its
parameter - check to see if the open command worked with
infile.fail - use infile to read in data
- call infile.close to close the stream
14- Example 1 Open a file called "prices.dat". If
the file opens, print the message "File
successfully opened!". If not, print "File
failed to open".
include ltiostreamgt include ltfstreamgt include
ltcstdlibgt using namespace std int main()
ifstream infile infile.open("prices.dat")
if (infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
- Steps to read from a file
- declare a variable infile of type ifsteam
- call infile.open, and send the filename as its
parameter - check to see if the open command worked with
infile.fail - use infile to read in data
- call infile.close to close the stream
15- Example 1 Open a file called "prices.dat". If
the file opens, print the message "File
successfully opened!". If not, print "File
failed to open".
include ltiostreamgt include ltfstreamgt include
ltcstdlibgt using namespace std int main()
ifstream infile infile.open("prices.dat")
if (infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
- Steps to read from a file
- declare a variable infile of type ifsteam
- call infile.open, and send the filename as its
parameter - check to see if the open command worked with
infile.fail - use infile to read in data
- call infile.close to close the stream
16- Example 1 Open a file called "prices.dat". If
the file opens, print the message "File
successfully opened!". If not, print "File
failed to open".
include ltiostreamgt include ltfstreamgt include
ltcstdlibgt using namespace std int main()
ifstream infile infile.open("prices.dat")
if (infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
- Steps to read from a file
- declare a variable infile of type ifsteam
- call infile.open, and send the filename as its
parameter - check to see if the open command worked with
infile.fail - use infile to read in data
- call infile.close to close the stream
17- Example 1 Open a file called "prices.dat". If
the file opens, print the message "File
successfully opened!". If not, print "File
failed to open".
include ltiostreamgt include ltfstreamgt include
ltcstdlibgt using namespace std int main()
ifstream infile infile.open("prices.dat")
if (infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
- Steps to read from a file
- declare a variable infile of type ifsteam
- call infile.open, and send the filename as its
parameter - check to see if the open command worked with
infile.fail - use infile to read in data
- call infile.close to close the stream
18- Example 2 Read a filename from the user, and
open that file for reading. If the file opens,
print the message "File successfully opened!".
If not, print "File failed to open".
19- Read a filename from the user, and open that file
for reading. If the file opens, print the
message "File successfully opened!". If not,
print "File failed to open".
// included libraries iostream, fstream,
cstlib, string int main() string
filename cout ltlt "Please enter the name of
the file " cin gtgt filename ifstream
infile infile.open(filename.c_str()) if
(infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
20- Read a filename from the user, and open that file
for reading. If the file opens, print the
message "File successfully opened!". If not,
print "File failed to open".
// included libraries iostream, fstream,
cstlib, string int main() string
filename cout ltlt "Please enter the name of
the file " cin gtgt filename ifstream
infile infile.open(filename.c_str()) if
(infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
21- Read a filename from the user, and open that file
for reading. If the file opens, print the
message "File successfully opened!". If not,
print "File failed to open".
// included libraries iostream, fstream,
cstlib, string int main() string
filename cout ltlt "Please enter the name of
the file " cin gtgt filename ifstream
infile infile.open(filename.c_str()) if
(infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
22- Read a filename from the user, and open that file
for reading. If the file opens, print the
message "File successfully opened!". If not,
print "File failed to open".
// included libraries iostream, fstream,
cstlib, string int main() string
filename cout ltlt "Please enter the name of
the file " cin gtgt filename ifstream
infile infile.open(filename.c_str()) if
(infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
23- Read a filename from the user, and open that file
for reading. If the file opens, print the
message "File successfully opened!". If not,
print "File failed to open".
// included libraries iostream, fstream,
cstlib, string int main() string
filename cout ltlt "Please enter the name of
the file " cin gtgt filename ifstream
infile infile.open(filename.c_str()) if
(infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
24- Read a filename from the user, and open that file
for reading. If the file opens, print the
message "File successfully opened!". If not,
print "File failed to open".
// included libraries iostream, fstream,
cstlib, string int main() string
filename cout ltlt "Please enter the name of
the file " cin gtgt filename ifstream
infile infile.open(filename.c_str()) if
(infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
25- Read a filename from the user, and open that file
for reading. If the file opens, print the
message "File successfully opened!". If not,
print "File failed to open".
// included libraries iostream, fstream,
cstlib, string int main() string
filename cout ltlt "Please enter the name of
the file " cin gtgt filename ifstream
infile infile.open(filename.c_str()) if
(infile.fail()) cout ltlt "File failed to
open" ltlt endl exit(1) cout ltlt "File
successfully opened!" ltlt endl
infile.close() return 0
26- How to read from a file
- ifstream is a subtype of istream
- this means that anything you can do with an
istream, you can do with an ifstream - cin is an istream
- hence, any operation supported by cin, is also
supported by infile - the gtgt operator
- getline
27- Example Read in three values from a file called
"data.txt", and print out the average of those
three values.
28- Example Read in three values from a file called
"data.txt", and print out the average of those
three values.
// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val1, val2, val3
infile gtgt val1 gtgt val2 gtgt val3 cout ltlt "The
average of these values is " ltlt (val1
val2 val3)/3 ltlt endl infile.close()
return 0
Code for reading in values goes here!
29- Example Read in three values from a file called
"data.txt", and print out the average of those
three values.
// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val1, val2, val3 cin
gtgt val1 gtgt val2 gtgt val3 cout ltlt "The average
of these values is " ltlt (val1 val2
val3)/3 ltlt endl infile.close() return
0
If we were reading from the keyboard, code would
look like this
30- Example Read in three values from a file called
"data.txt", and print out the average of those
three values.
// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val1, val2, val3 cin
gtgt val1 gtgt val2 gtgt val3 cout ltlt "The average
of these values is " ltlt (val1 val2
val3)/3 ltlt endl infile.close() return
0
Replace cin with infile, and you'll read from the
file, instead of the keyboard.
31- Example Read in three values from a file called
"data.txt", and print out the average of those
three values.
// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val1, val2, val3
infile gtgt val1 gtgt val2 gtgt val3 cout ltlt "The
average of these values is " ltlt (val1
val2 val3)/3 ltlt endl infile.close()
return 0
Replace cin with infile, and you'll read from the
file, instead of the keyboard.
32- Example Read in three values from a file called
"data.txt", and print out the average of those
three values.
// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val1, val2, val3
infile gtgt val1 gtgt val2 gtgt val3 cout ltlt "The
average of these values is " ltlt (val1
val2 val3)/3 ltlt endl infile.close()
return 0
33- File Input Unknown file size
- Example read in all of the numbers from a file,
and print their average.
34- Example Read in three values from a file called
"data.txt", and print out the average of those
three values.
// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val1, val2, val3
infile gtgt val1 gtgt val2 gtgt val3 cout ltlt "The
average of these values is " ltlt (val1
val2 val3)/3 ltlt endl infile.close()
return 0
- This accommodates exactly three values.
- if "test.txt" contains more than 3 values, they
are ignored - if "test.txt" contains less than 3 values,
program doesn't fill val3.
35- Solution
- loop through all values in the file
- add each value read to a variable total
- count the number of values read
- divide total by the number of values read
36// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double total 0 int count
0 infile gtgt val while ( )
total val count infile
gtgt val if (count 0) cout ltlt
"No values to average!" ltlt endl else
cout ltlt "The average of these values is "
ltlt total / count ltlt endl
infile.close() return 0
What goes here?
37- .eof()
- .eof() returns true when the file has been read
past its end - typical format for .eof() loops
- Step 1 read a value from filestream
- Step 2 while ( filestream.eof() is not true)
- Step 2.1 Do something with value
- Step 2.2 read another value from filestream
38// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double total 0 int count
0 infile gtgt val while ( )
total val count infile
gtgt val if (count 0) cout ltlt
"No values to average!" ltlt endl else
cout ltlt "The average of these values is "
ltlt total / count ltlt endl
infile.close() return 0
Step 1 read a value from filestream Step 2
while ( filestream.eof() is not true) Step 2.1
Do something with value Step 2.2 read another
value from filestream
39// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val, total 0 int
count 0 infile gtgt val while (
) total val count
infile gtgt val if (count 0)
cout ltlt "No values to average!" ltlt endl else
cout ltlt "The average of these values is "
ltlt total / count ltlt endl
infile.close() return 0
Step 1 read a value from filestream Step 2
while ( filestream.eof() is not true) Step 2.1
Do something with value Step 2.2 read another
value from filestream
40// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val, total 0 int
count 0 infile gtgt val while (
!infile.eof() ) total val
count infile gtgt val if
(count 0) cout ltlt "No values to
average!" ltlt endl else cout ltlt "The
average of these values is " ltlt total /
count ltlt endl infile.close() return
0
Step 1 read a value from filestream Step 2
while ( filestream.eof() is not true) Step 2.1
Do something with value Step 2.2 read another
value from filestream
41// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val, total 0 int
count 0 infile gtgt val while (
!infile.eof() ) total val
count infile gtgt val if
(count 0) cout ltlt "No values to
average!" ltlt endl else cout ltlt "The
average of these values is " ltlt total /
count ltlt endl infile.close() return
0
Step 1 read a value from filestream Step 2
while ( filestream.eof() is not true) Step 2.1
Do something with value Step 2.2 read another
value from filestream
42// included libraries iostream, fstream,
cstlib int main() ifstream infile
infile.open("test.txt") if (infile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) double val, total 0 int
count 0 infile gtgt val while (
!infile.eof() ) total val
count infile gtgt val if
(count 0) cout ltlt "No values to
average!" ltlt endl else cout ltlt "The
average of these values is " ltlt total /
count ltlt endl infile.close() return
0
Step 1 read a value from filestream Step 2
while ( filestream.eof() is not true) Step 2.1
Do something with value Step 2.2 read another
value from filestream
43- File Output
- so far, all of our information has gone to the
screen - we can redirect this to a file, in a similar
manner as redirecting input from a file - use ofstream variable
- ofstream is a type, of subtype ostream
- cout is an ostream variable
- anything you can do with cout, you can do with an
ofstream variable - this includes ltlt, and all formatting flags
44- Steps to write to a file
- declare a variable outfile of type ofstream
- call outfile.open, and send the filename as its
parameter - check to see if the open command worked with
outfile.fail - use outfile to output data
- call outfile.close to close the stream
- ofstream outfile
- outfile.open("prices.dat")
- if (outfile.fail())
- cout ltlt "File failed to open"
- ltlt endl
- exit(1)
-
- // write data to outfile
- outfile.close()
45- Example Write your name, address, and phone
number to a file called "name.txt"
46 // included libraries iostream, fstream,
cstlib int main() ofstream outfile
outfile.open("name.txt") if (outfile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) cout ltlt "Kevin Grant" ltlt endl
cout ltlt "1234 Main Street" ltlt endl cout ltlt
"Disneyland, California, 90210" ltlt endl cout
ltlt "(123) 456-7890" ltlt endl
outfile.close() return 0
If we were writing to the screen, we would do
this.
47 // included libraries iostream, fstream,
cstlib int main() ofstream outfile
outfile.open("name.txt") if (outfile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) cout ltlt "Kevin Grant" ltlt endl
cout ltlt "1234 Main Street" ltlt endl cout ltlt
"Disneyland, California, 90210" ltlt endl cout
ltlt "(123) 456-7890" ltlt endl
outfile.close() return 0
Replace cout with outfile
48 // included libraries iostream, fstream,
cstlib int main() ofstream outfile
outfile.open("name.txt") if (outfile.fail())
cout ltlt "File failed to open" ltlt endl
exit(1) outfile ltlt "Kevin Grant" ltlt
endl outfile ltlt "1234 Main Street" ltlt endl
outfile ltlt "Disneyland, California, 90210" ltlt
endl outfile ltlt "(123) 456-7890" ltlt endl
outfile.close() return 0
49name.txt
Kevin Grant 1234 Main Street Disneyland,
California, 90210 (123) 456-7890
50- Example Copy the contents of a file called
"input.txt" to a file called "output.txt" - Steps
- 1) Open a file called input.txt for reading
- 2) Open a file called output.txt for writing
- 3) Write each line in input.txt to output.txt
- 4) Close files
51// included libraries iostream, fstream,
cstlib, string int main() 1) Open a file
called input.txt for reading 2) Open a file
called output.txt for writing 3) Write each line
in input.txt to output.txt 4) Close files
return 0
52// included libraries iostream, fstream,
cstlib, string int main() 1) Open a file
called input.txt for reading 2) Open a file
called output.txt for writing 3) Write each line
in input.txt to output.txt 4) Close files
return 0
53// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) 2) Open a file called
output.txt for writing 3) Write each line in
input.txt to output.txt 4) Close files
return 0
54// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) 2) Open a file called
output.txt for writing 3) Write each line in
input.txt to output.txt 4) Close files
return 0
55// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) ofstream outfile
outfile.open("output.txt") if (outfile.fail())
cout ltlt "output.txt failed to open." ltlt
endl exit(1) 3) Write each line in
input.txt to output.txt 4) Close files return
0
56// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) ofstream outfile
outfile.open("output.txt") if (outfile.fail())
cout ltlt "output.txt failed to open." ltlt
endl exit(1) 3) Write each line in
input.txt to output.txt 4) Close files return
0
57// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) ofstream outfile
outfile.open("output.txt") if (outfile.fail())
cout ltlt "output.txt failed to open." ltlt
endl exit(1) 3) For each line in
input.txt 3.1) Write line to output.txt 4)
Close files return 0
58// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) ofstream outfile
outfile.open("output.txt") if (outfile.fail())
cout ltlt "output.txt failed to open." ltlt
endl exit(1) 3) For each line in
input.txt 3.1) Write line to output.txt 4)
Close files return 0
Step 1 read a value from filestream Step 2
while ( filestream.eof() is not true) Step 2.1
Do something with value Step 2.2 read another
value from filestream
59// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) ofstream outfile
outfile.open("output.txt") if (outfile.fail())
cout ltlt "output.txt failed to open." ltlt
endl exit(1) string buffer
getline(infile, buffer) while ( !infile.eof()
) 3.1)
Write line to output.txt getline(infile,
buffer) 4) Close files return 0
60// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) ofstream outfile
outfile.open("output.txt") if (outfile.fail())
cout ltlt "output.txt failed to open." ltlt
endl exit(1) string buffer
getline(infile, buffer) while ( !infile.eof()
) 3.1)
Write line to output.txt getline(infile,
buffer) 4) Close files return 0
61// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) ofstream outfile
outfile.open("output.txt") if (outfile.fail())
cout ltlt "output.txt failed to open." ltlt
endl exit(1) string buffer
getline(infile, buffer) while ( !infile.eof()
) outfile ltlt
buffer ltlt endl getline(infile, buffer)
4) Close files return 0
62// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) ofstream outfile
outfile.open("output.txt") if (outfile.fail())
cout ltlt "output.txt failed to open." ltlt
endl exit(1) string buffer
getline(infile, buffer) while ( !infile.eof()
) outfile ltlt
buffer ltlt endl getline(infile, buffer)
4) Close files return 0
63// included libraries iostream, fstream,
cstlib, string int main() ifstream infile
infile.open("input.txt") if (infile.fail())
cout ltlt "input.txt failed to open." ltlt
endl exit(1) ofstream outfile
outfile.open("output.txt") if (outfile.fail())
cout ltlt "output.txt failed to open." ltlt
endl exit(1) string buffer
getline(infile, buffer) while ( !infile.eof()
) outfile ltlt
buffer ltlt endl getline(infile, buffer)
infile.close() outfile.close() return
0