140 likes | 153 Views
Learn about C++ I/O, streams like istream and ostream, methods for extraction and insertion, file I/O with fstream, and reading/writing data to/from files.
E N D
C++ I/O Dick Steflik CS-212
C++ I/O • Modeled after UNIX’s concept of a “stream” • conceptionally a stream is a continuous flow of characters/bytes from one place to another • an abstraction that is used to hide all of the details of doing I/O programming from the user • ostream – characters flow from the program to an output device • istream – characters flow from an input device to the program
istream • istream – the C++ class used for inputting information from an arbitrary device (keyboard, hard drive, diskette…) to a program. • C++ has an always instantiated object of class istream called “cin” • by default cin represents your keyboard or your console input device (stdin)
istream (cont) • since istream is a class it also has a set of methods • extraction – to take information from the input device and assign it to a program variable the “>>” (shift right) operator has been overloaded and named extraction; it extracts information from the input stream. • program execution is “blocked” until data is ready to be read. • ex. int age,time; cin >> age >> time; • leading “white space” is ignored by extract • extraction rules are based in “type”
istream – state methods • return the state of the istream status flags • good( ) • true – all is ok with the stream • false – an error was encountered • bad( ) • true – an unrecoverable error occurred • false – OK • fail( ) • true – an unrecoverable error occurred in the stream • false – everything is normal • eof( ) • true – an end-of-file mark was encountered • false – normal • clear( ) – used to clear the stream after an error is detected
istream – other methods • get(char ) – read a single character (will read white space) • get(chArray,N,stop) reads characters into chArray until n chars have been read –or- the stop char is found • getline( chArray,n,stop) – same but stop is not read and is left in the stream • read( chArray,n) – read into chArray until n chars or eof. • readsome(chArray,n) – same but returns number of chars extracted • peek( ) – return the next char in the stream but leave it there. • ignore(n,stop) – skip n chars in stream or until stop is encountered • width( n ) – set max chars to be read to n • putback( ch) – put the character ch into the stream • unget( ) – put the most recent character read back into the stream • seekg(offset , base) – move the read position fo offset from the last base set by ios::beg, ios::cur or ios::end • tellg( ) – return position (offset) of the current read position.
ostream • ostream – the C++ class used for outputting information to an arbitrary device (screen, hard drive, diskette…) from a program. • C++ has an always instantiated object of class istream called “cout” • by default cout represents your screen or your console output device (stdout)
ostream (cont) • since ostream is a class it also has a set of methods • insertion – to send information from a program element to an output device ; the “<<” (shift left) operator has been overloaded and named insertion; it inserts information into the output stream. • ex. int age,time; cout << age << “ “ << time; • insertion formatting rules are based in “type” but can be overridden using formatting manipulators
noshowpos boolalpha noboolalpha uppercase nouppercase unitbuf flush endl left right internal Format manipulators • fixed • scientific • showpoint • noshowpoint • dec • hex • oct • showbase • noshowbase • showpos
File I/O • fstream – parent class for ifstream • ifstream – input file stream • ofstream – output file stream
fstream methods • open( filename) – attach a file to an fstream • close( ) – close the stream • is_open() – boolean; true if open, false if not • eof() – boolean; true if at end of file , false if not • File opening modes • ios::in – open file for input • ios::trunc – open and delete contents • ios::out – open for output (uses trunc) • ios::app – open for output at the end of the file • ios::ate – open for reading at end of the file • ios::binary – open for binary I/O using read( ) and write( )
Reading and writing to/from a file • Declare in input stream: • ifstream in; • Declare an output file stream • ofstream out; • attach the input stream to as file • in.open(“myfile.txt”); • attach the output stream to a file • out.open(“myoutputfile.txt”); • or – combine the steps • ifstream in(“myfile.txt”); • ofstream out(“myoutputfile”);
cont. Reading/Writing • assuming input file is full of integers (separated by blanks) for (;;) // repeat forever { in >> myint; //read an int if ( in.eof()) break; cout << myint << endl; // print on the console out << myint; // write to the output file }