Download presentation
Presentation is loading. Please wait.
Published byPeter Marshall Modified over 8 years ago
1
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-1 Today’s Lecture I/O Streams Console I/O File I/O Tools for File I/O Sequential Access & Random Access to Files
2
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-2 Introduction Streams Special objects Deliver program input and output In C++ Console I/O is working with streams File I/O is also working with streams
3
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-3 Streams Stream: A flow of data Input stream Flow into program Can come from keyboard Can come from file Output stream Flow out of program Can go to screen Can go to file
4
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-4 Streams Usage We’ve used streams already cin Input stream object connected to keyboard cout Output stream object connected to screen
5
Stream Example int num1, num2, total; cout << "First number: "; cin >> num1; cout << "Second number: "; cin >> num2; total = num1 + num2; cout << “total = " << total << endl; Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-5
6
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-6 Streams Usage We’ve used streams already cin Input stream object connected to keyboard cout Output stream object connected to screen Can define other streams To or from files Used similarly as cin, cout
7
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-7 Streams Usage Examples: cin, cout Consider: Using the pre-defined stream cin intNumber; cin >>Number; Reads value from stream (keyboard), assigned to Number Using the pre-defined stream cout cout << Number; Writes value to stream (monitor)
8
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-8 Streams Usage Like cin, cout Consider: Given program defines stream inStream that comes from some file: int Number; inStream >>Number; Reads value from stream (file), assigned to theNumber Program defines stream outStream that goes to some file outStream << theNumber; Writes value to stream, which goes to file
9
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-9 Files Reading from file When program takes input Writing to file When program sends output Start at beginning of file (Sequential access) Other methods available
10
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-10 File Connection Must first create a file stream object Then connect the file to the file stream object For input only: File ifstream object For output only: File ofstream object Classes ifstream and ofstream Defined in library Named in std namespace
11
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-11 File I/O Libraries To allow both file input and output in your program: #include using namespace std;
12
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-12 Declaring Streams Objects (Variables) Stream must be declared like any other class variable: ifstream input_file_stream; ofstream out_file_stream; Must then "connect" to file: input_file_stream.open("infile.txt"); Called "opening the file" Uses member function open Can specify complete pathname
13
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-13 Streams Usage Once declared and connected, use it like cin and cout! int N; input_file_stream >> N; Output stream similar: ofstream output_file_stream; output_file_stream.open("outfile.txt"); output_file_stream << "Number = " << N;
14
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-14 Closing Files Files should be closed When program completed getting input or sending output Disconnects stream from file In action: input_file_stream.close(); output_file_stream.close();
15
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-15 File Example: Display 12.1 Simple File Input/Output (1 of 2)
16
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-16 File Example: Display 12.1 Simple File Input/Output (1 of 2)
17
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-17 Appending to a File Standard of stream open operation begins with empty file Even if file exists contents lost Open for append: ofstream outStream; outStream.open("important.txt", ios::app); If file doesn’t exist creates it If file exists appends to end
18
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-18 Compare Console I/O and File I/O All cin functions are same for files! Read in (send out) integers (int) Read in (send out) characters (char) Read in (send out) floating-point s (float) …. For String operating: >> read one word (separated by spaces, new lines) getline() read one line of words
19
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-19 Compare Console I/O and File I/O (continued) For console String (C-string) operations char S[100]; cin >> S; read one word char S[100]; cin.getline(S, 20) ; read one line of words
20
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-20 Compare Console I/O and File I/O (continued) For file String (C-string) operations ifstream ifm; ifm.open("infile.txt"); char S[100]; ifm >> S; read one word char S[100]; ifm.getline(S, 20) ; read one line of words
21
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-21 Compare Console I/O and File I/O (continued) cout is same for file operations (say fount) ofstream fout; fout.open(“output.txt", ios::app); cout << “whatever\n” fout << “whatever\n” Whatever displayed on screen will be same as those saved in file
22
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-22 More I/O member functions See Appendix 4 of the textbook Stream_var.open(“File name”); Stream_var.close(); Strean_var.eof(); Stream_var.get(char_var); Stream_var.getline(cstring_var, length);
23
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-23 Checking End of File (method 1) Use loop to process file until end Member function eof() char next; inStream.get(next); while (!inStream.eof()) { cout << next; inStream.get(next); } Reads each character (including space, new line) until file ends eof() member function returns bool
24
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-24 Checking End of File (method 1, continued ) inStream.eof() does not become true until the program attempts to read one character beyond the end of the file, that’s why we need to read a character then check the condition Consider a file contains AB C inStream.get(next) will be executed 6 times. Why? Stream_var.getline(cstring_var, length) should also use stream_var.eof() to check end of file
25
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-25 Checking End of File (method 2) Use loop to process file until end An extraction operator actually returns a boolean value inStrem >> next Return true if the read was successful (space and new line will not be read) and returns false when code attempts to read beyond the end of the file Int next, sum =0; while (inStream >> next) { sum = sum + next; } cout << “ the sum is “ << sum << endl;
26
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-26 Checking End of File (method 2) Use loop to process file until end inStrem.get(next) Return true if the read was successful and returns false when code attempts to read beyond the end of the file char next, sum =0; while (inStream.get(next)) { sum = sum + 1; } cout << “ the total number of characters is “ << sum << endl;
27
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-27 Checking End of File (method 2) Use loop to process file until end inStrem.getline(next, length) Return true if the read was successful and returns false when code attempts to read beyond the end of the file Char[] next, sum =0; while (inStream.get(next, 100)) { sum = sum + 1; } cout << “ the total number of lines is “ << sum << endl;
28
Which method to use? I would use method 2! Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-28
29
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-29 Which Function to Write The easiest one and works for any text data <<
30
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-30 Which Function to Read Numbers (Integer / floating-point) file: numbers are separated by blank space(s) >> Text file: words are separated by blank space(s): each word is going to be processed separately >>
31
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-31 Which Function to Read (continued) Character files: each character (including space) needs to be processed individually get(char s) Character files: one line is a record getline(char s[], int size)
32
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-32 Tools: File Names as Input Stream open operation Argument to open() is string type Can be literal (used so far) or variable char fileName[16]; ifstream inStream; cout > fileName; inStream.open(fileName); Provides more flexibility
33
File Access Applications Copy files Copy char by char Copy line by line Process files: Determine how many specific characters Count words Count lines Work on numbers Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-33
34
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-34 Read and Write can be Performed at the Same Time Opens same as istream or ostream Adds second argument fstream rwStream; rwStream.open("stuff", ios::in | ios:: out); Opens with read and write capability It is confusing where to read and where to write: not recommend to use.
35
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-35 Random Access to Files Sequential Access Most commonly used So far we have talked about Random Access Rapid access to records Access "randomly" to any part of file
36
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-36 Random Access Tools Move about in file rwStream.seekp(1000); Positions put-pointer at 1000 th byte rwStream.seekg(1000); Positions get-pointer at 1000 th byte Not a requirement for this course
37
Summary of File Operations Read from a file Write to a new or existing file Delete a file Copy a file Move a file Modify a file Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 12-37
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.