Lecture 5A File processing Richard Gesick.

Slides:



Advertisements
Similar presentations
Slide: 1 Interra Induction Training Object Oriented Programming in C++ IO Streams Kolkata, July 25, 2005.
Advertisements

CS 1620 File I/O. 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.
Copyright © 2012 Pearson Education, Inc. Chapter 12: Advanced File Operations.
1 Lecture 19 Chapter 4 Program Input and the Software Design Process Dale/Weems/Headington.
Chapter 5: Loops and Files.
Lecture 18:Topic: I/O Formatting and Files Dale/Weems/Headington
計算機概論實習 Stream Stream: sequence of bytes Input: from device (keyboard, disk drive) to memory Output: from memory to device (monitor, printer,
C++ plus. 2 Goals Some general C++ tips 3 C++ Tips is header file for a library that defines three stream objects Keyboard an istream object named cin.
Chapter 8: I/O Streams and Data Files. In this chapter, you will learn about: – I/O file stream objects and functions – Reading and writing character-based.
How to Program in C++ CHAPTER 3: INPUT & OUTPUT INSTRUCTOR: MOHAMMAD MOJADDAM.
Copyright © 2012 Pearson Education, Inc. Chapter 5 Working with Data Files.
Program Input and the Software Design Process ROBERT REAVES.
1 Chapter 4 Program Input and the Software Design Process.
File I/O ifstreams and ofstreams Sections 11.1 &
Chapter 9 I/O Streams and Data Files
1 Streams In C++, I/O occurs in streams. A stream is a sequence of bytes Each I/O device (e.g. keyboard, mouse, monitor, hard disk, printer, etc.) receives.
1 CS161 Introduction to Computer Science Topic #13.
Advanced File Operations Chapter File Operations File: a set of data stored on a computer, often on a disk drive Programs can read from, write to.
File Input and Output in C++. Keyboard and Screen I/O #include cin (of type istream) cout (of type ostream) Keyboard Screen executing program input data.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 12: Advanced File Operations.
File I/O 1 ifstreams and ofstreams Sections 11.1 & 11.2.
1 I/O  C++ has no built-in support for input/output input/output is a library (iostream)  C++ program views input and output as a stream of bytes  Input:
Disk Files for I/O your variable (of type ifstream) your variable (of type ofstream) disk file “myInfile.dat” disk file “myOut.dat” executing program input.
1 Chapter 4 Program Input and the Software Design Process Dale/Weems.
No I/O is built into C++ l instead, a library provides input stream and output stream KeyboardScreen executing program istreamostream 1.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 12 Advanced File Operations.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide
Loops and Files. 5.1 The Increment and Decrement Operators.
Data Files ELEC 206 Computer Applications for Electrical Engineers Dr. Ron Hayne.
Chapter 3: Input/Output. Objectives In this chapter, you will: – Learn what a stream is and examine input and output streams – Explore how to read data.
Input/Output CSci 588: Data Structures, Algorithms and Software Design Fall 2011 All material not from online sources copyright © Travis Desell, 2011
Engineering Problem Solving with C++, Second Edition, J. Ingber 1 Engineering Problem Solving with C++, Etter/Ingber Chapter 4 Working with Data Files.
Input/Output. Objectives In this chapter you will: Learn what a stream is and examine input and output streams Explore how to use the input stream functions.
1 Chapter 4 Program Input and the Software Design Process.
Declaring fstream Objects An istream object named cin connects program and keyboard An ostream object named cout connects the program and the screen These.
CS162 External Data Files 1 Today in CS162 External Files What is an external file? How do we save data in a file?
Copyright © 2006 Pearson Addison-Wesley. All rights reserved Today’s Lecture  I/O Streams  Console I/O  File I/O  Tools for File I/O  Sequential.
File I/O in C++ I. Using Input/Output Files A computer file is stored on a secondary storage device (e.g., disk); is permanent; can be used to provide.
© Janice Regan, CMPT 128, Jan CMPT 128: Introduction to Computing Science for Engineering Students File Input and Output Checking input for errors.
Advanced File Operations Chapter File Operations File: a set of data stored on a computer, often on a disk drive Programs can read from, write to.
File I/O. Files allow permanent storage of programs and data. ifstream and ofstream objects –For file I/O the inclusion of is required. –Objects for file.
1 Stream Input and Output Read Text, page Keyboard and Screen I/O #include cin (of type istream) cout (of type ostream) KeyboardScreen executing.
C++ for Everyone by Cay Horstmann Copyright © 2012 by John Wiley & Sons. All rights reserved Chapter Eight: Streams Slides by Evan Gallagher.
Programming II I/O Streams and Data Files 1(c) Asma AlOsaimi.
Chapter 3: Input/Output. Objectives In this chapter, you will: – Learn what a stream is and examine input and output streams – Explore how to read data.
Chapter 4 Program Input and the Software Design Process
ifstreams and ofstreams
Functions Manipulating Files
What is a File? A file is a collection on information, usually stored on a computer’s disk. Information can be saved to files and then later reused.
Copyright © 2003 Pearson Education, Inc.
Chapter 1 Software Engineering Principles
File I/O.
Standard Input/Output Streams
Standard Input/Output Streams
Stream States CSCE 121 J. Michael Moore
Working with Data Files
Programming with Data Files
when need to keep permanently
Chapter 3: Input/Output
Topics Input and Output Streams More Detailed Error Testing
Chapter 12: Advanced File Operations.
No I/O is built into C++ instead, a library provides input stream and output stream Keyboard Screen executing program istream ostream 1.
Chapter 3 Input output.
CSC 143 Stream I/O Classes and Files [A11-A15, A38-A50]
Chapter 4 Program Input and the Software Design Process
Reading from and Writing to Files
ifstreams and ofstreams
Dale/Weems/Headington Program Input and the Software Design Process
Stream States CSCE 121 Based on slides created by Carlos Soto.
Reading from and Writing to Files
Presentation transcript:

Lecture 5A File processing Richard Gesick

Outline Objectives Defining File Streams Reading Data Files Generating a Data File Problem Solving Applied: Data Filters – Modifying an HTML File Error Checking Numerical Technique: Linear Modeling* Problem Solving Applied: Ozone Measurements*

Objectives Develop problem solutions in C++ that: Open and close data files for input and output. Read data from files using common looping structures. Check the state of an input stream. Recover from input stream errors. Apply the numerical technique of linear modeling.

Copyright © 2012 Pearson Education, Inc. Defining File Streams Copyright © 2012 Pearson Education, Inc.

Standard Input and Output C++ defines the cin and cout objects to represent the standard input (keyboard) and standard output (console). C++ also defines the standard error stream, cerr. Standard input is a kind of general input stream class; standard output and error streams are special kinds of general output stream.

Other kinds of Streams Standard C++ library also defines special kinds of streams for file input and output. #include <ifstream> #include <ofstream>

Disk Files for I/O #include <fstream> your variable (of type ifstream) (of type ofstream) disk file “myInfile.dat” “myOut.dat” executing program input data output data

Disk I/O To use disk I/O Access #include <fstream> Choose valid identifiers for your file streams and declare them Open the files and associate them with disk names

Disk I/O, cont... Use your file stream identifiers in your I/O statements(using >> and << , manipulators, get, ignore) Close the files

Stream Object Hierarchy Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. The ifstream Class The ifstream (input file stream) class is derived from istream (input stream class). Thus ifstream inherits the input operator and member functions eof() and fail() defined in istream. The ifstream class also defined specialized methods specific to working with files. Copyright © 2012 Pearson Education, Inc.

Opening a File Opening a file Places a file reading marker at the very beginning of the file, pointing to the first character in the file

Copyright © 2012 Pearson Education, Inc. Input File Streams Each data files used for input must have an ifstream object associated with it: ifstream sensor1; sensor1.open(“sensor1.dat”); Or just – ifstream sensor1(“sensor1.dat”); Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Avoiding Bugs If opening the named file fails, the fail error bit is set, and all statements to read from the file will be ignored. NO error message will be generated but the program will continue to execute. Check to be sure that the open was successful. fail() method of istream returns false. Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Input File Example ifstream sensor1; sensor1.open("sensor1.dat"); if ( sensor1.fail() ) //open failed { cerr << "File sensor1.dat could not be opened"; exit(1); //end execution of the program } Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. The ofstream Class The ofstream (output file stream) class is derived from ostream (output stream class). Thus ofstream inherits the output operator and member functions ostream. The ofstream class also defined specialized methods specific to working with files. Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Output File Streams Each data files used for output must have an ofstream object associated with it: ofstream sensor1; sensor1.open(“balloon.dat”); Or just – ofstream sensor1(“balloon.dat”); Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Output File Modes By default, opening a file for output in this way will either create the file if it doesn’t already exist or overwrite a previously existing file. If you wish to simply append new content to the previously existing file, you may open the file in append mode: sensor1.open(“balloon.dat”, ios::append); Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. More on File Objects The close() methods for both input and output stream objects should be called when the program is done with the file. The method(s) will be called automatically when the program exits. When you use a string class to represent the file name, you must use the c_str() method of string to provide the appropriate type for use in input and output open/constructor methods. Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Reading Data Files Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. File Formats To read a file, some knowledge about the contents of the file are needed: Name of the file. Order and data types of the values stored in the file. Three common structures: First-line in file contains number of lines/records in the file. Trailer signal/sentinel signal used to indicate the last line/record in the file. End-of-file used directly to indicate last line/record in the file. Copyright © 2012 Pearson Education, Inc.

Specified Number of Lines sensor1.dat 10 0.0 132.5 0.1 147.2 0.2 148.3 0.3 157.3 0.4 163.2 0.5 158.2 0.6 169.3 0.7 148.2 0.8 137.6 //open input file ifstream sensor1(“sensor1.dat”); //read the number of data entries int numEntries; sensor1 >> numEntries; //read every row double t, y; for (int i = 0; i < numEntries; i++) { sensor1 >> t >> y; //do something with the data } Copyright © 2012 Pearson Education, Inc.

Trailer/Sentinel Signal sensor2.dat 0.0 132.5 0.1 147.2 0.2 148.3 0.3 157.3 0.4 163.2 0.5 158.2 0.6 169.3 0.7 148.2 0.8 137.6 -99 -99 //open input file ifstream sensor2(“sensor2.dat”); //read every row double t, y; do { sensor1 >> t >> y; if (t < 0 || y < 0) break; //do something with the data } while (! sensor1.eof()); Copyright © 2012 Pearson Education, Inc.

Run Time File Name Entry #include <string> // Contains conversion function c_str ifstream inFile; string fileName; // Prompt: cout << “Enter input file name: “ << endl; cin >> fileName; // Convert string fileName to a C string type inFile.open(fileName.c_str());

Copyright © 2012 Pearson Education, Inc. EOF-based File Input sensor3.dat 0.0 132.5 0.1 147.2 0.2 148.3 0.3 157.3 0.4 163.2 0.5 158.2 0.6 169.3 0.7 148.2 0.8 137.6 //open input file ifstream sensor3(“sensor3.dat”); //read every row double t, y; while (! sensor3.eof()) { sensor1 >> t >> y; if (sensor3.fail()) break; //do something with the data } Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Generating a Data File Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Writing Files After opening an output file, writing to a file is no different from writing to standard output. Must decide on a file format. Sentinels can be hard to choose to avoid conflict with valid data. Knowing in advance how many lines/records are in the file is sometimes difficult or impractical. Usually best to use eof-style file format where file structure contains only valid information. Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Error Checking Copyright © 2012 Pearson Education, Inc.

Opening a File Opening a file Associates the C++ identifier for your file with the physical(disk) name for the file If the input file does not exist on disk, open is not successful If the output file does not exist on disk, a new file with that name is created If the output file already exists, it is erased

Stream Fail State When a stream enters the fail state, Further I/O operations using that stream have no effect at all The computer does not automatically halt the program or give any error message

Stream Fail State Possible reasons for entering fail state include: Invalid input data (often the wrong type) Opening an input file that doesn’t exist Opening an output file on a disk that is already full or is write-protected

Copyright © 2012 Pearson Education, Inc. Error Checking In addition to indicating if an error occurs when opening a file, fail() may also be used to detect other types of errors. Errors can occur when trying to read from an input stream when the data on the input stream isn’t of the appropriate type. Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Whitespace Whitespace is defined as blank, tab, newline, form feed, and carriage return characters. Used to separate data when reading from an input stream. For example, to read 2 integers from an input stream, there must be whitespace between the two numbers. C++ ignores the whitespace to read the numbers. If any other characters are encountered, the error (fail) state is set. Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Input Stream Errors Do not generate notification of errors! Only set the error state. Reads will not affect the state of the input buffer or alter variables. However the program will continue executing! Must “clear” the error state before additional input may be read (using istream’s clear() method). Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Stream State Indicated by a set of state flags: badbit, failbit, eofbit, goodbit. Events may alter the stream state: Event badbit failbit eofbit goodbit Initialization of a stream 1 Failure to open a file Unexpected data encountered End of file encountered Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Stream Class Methods Method Description bool bad() Returns true iff badbit is set. bool eof() Returns true iff eofbit is set. bool fail() Returns true iff failbit is set. bool good() Returns true iff goodbit is set. void clear(iostate flag = goodbit) Sets the state flags. iostate rdstate() Returns the value of the state flags. Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Data Filters – Modifying an HTML File Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Data Filters – Modifying an HTML File Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Data Filters – Modifying an HTML File Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Data Filters – Modifying an HTML File Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Data Filters – Modifying an HTML File Copyright © 2012 Pearson Education, Inc.

Numerical Technique: Linear Modeling* Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Linear Modeling Linear modeling is the name given to the process that determines the linear equation (y = mx + b) that is the best fit to a set of data points. Linear regression does this by minimizing the squared distance between the line and the data points. Copyright © 2012 Pearson Education, Inc.

Copyright © 2012 Pearson Education, Inc. Example Copyright © 2012 Pearson Education, Inc.

Solving for Linear Model Parameters Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Ozone Measurements* Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Ozone Measurements* Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Ozone Measurements* Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Ozone Measurements* Copyright © 2012 Pearson Education, Inc.

Problem Solving Applied: Ozone Measurements* Copyright © 2012 Pearson Education, Inc.