Lecture 27 - C++ IO Manipulation - 06

Views:
 
Category: Entertainment
     
 

Presentation Description

rr

Comments

Presentation Transcript

I/O Manipulation:

Lect 27 P. 1 Winter Quarter I/O Manipulation Lecture 27

Stream I/O Library Header Files:

Lect 27 P. 2 Winter Quarter Stream I/O Library Header Files Note: There is no “ .h ” on standard header files. Be careful about “ using namespace std ” iostream -- contains basic information required for all stream I/O operations iomanip -- contains information useful for performing formatted I/O with parameterized stream manipulators fstream -- contains information for performing file I/O operations strstream -- contains information for performing in-memory I/O operations (i.e., into or from strings in memory)

Classes for Stream I/O in C++ :

Lect 27 P. 3 Winter Quarter Classes for Stream I/O in C++ ios is the base class. istream and ostream inherit from ios ifstream inherits from istream (and ios) ofstream inherits from ostream (and ios) iostream inherits from istream and ostream (& ios) fstream inherits from ifstream, iostream, and ofstream

C++ Stream I/O -- Stream Manipulators:

Lect 27 P. 4 Winter Quarter C++ Stream I/O -- Stream Manipulators C++ provides various stream manipulators that perform formatting tasks. Stream manipulators are defined in < iomanip > These manipulators provide capabilities for setting field widths, setting precision, setting and unsetting format flags, flushing streams, inserting a "newline" and flushing output stream, skipping whitespace in input stream

C++ Stream I/O -- Stream Manipulators:

Lect 27 P. 5 Winter Quarter C++ Stream I/O -- Stream Manipulators setprecision ( ) Select output precision, i.e., number of significant digits to be printed. Example: cout << setprecision (2) ; // two significant digits setw ( ) Specify the field width (Can be used on input or output, but only applies to next insertion or extraction). Example: cout << setw (4) ; // field is four positions wide

C++ Stream I/O -- Stream Format States:

Lect 27 P. 6 Winter Quarter C++ Stream I/O -- Stream Format States Various ios format flags specify the kinds of formatting to be performed during stream I/O. There are member functions (and/or stream manipulators) which control flag settings. There are various flags for trailing zeros and decimal points, justification, number base, floating point representation, and so on.

Stream I/O Format State Flags:

Lect 27 P. 7 Winter Quarter Stream I/O Format State Flags ios::showpoint when set, show trailing decimal point and zeros ios::showpos when set, show the + sign before positive numbers ios::basefield ios::dec use base ten ios::oct use base eight ios::hex use base sixteen

Stream I/O Format State Flags:

Lect 27 P. 8 Winter Quarter Stream I/O Format State Flags ios::floatfield ios::fixed use fixed number of digits ios::scientific use "scientific" notation ios::adjustfield ios::left use left justification ios::right use right justification ios::internal left justify the sign, but right justify the value

Stream I/O Format State Flags:

Lect 27 P. 9 Winter Quarter Stream I/O Format State Flags ios::eofbit set when eof encountered [ stream.eof() ] ios::failbit set when format error occurred on the stream, but no characters were lost [ stream.fail() or simply ! stream ] ios::badbit set when stream error occurs that results in a loss of data [ stream.bad() ] ios::goodbit set when none of the bits eofbit , failbit , or badbit are set [ stream.good() ]

I/O Stream Member Functions:

Lect 27 P. 10 Winter Quarter I/O Stream Member Functions .setf ( ) Allows the setting of an I/O stream format flag. Examples: // To show the + sign in front of positive numbers cout.setf (ios::showpos) ; // To output the number in hexadecimal cout.setf (ios::hex, ios::basefield) ;

I/O Stream Member Functions:

Lect 27 P. 11 Winter Quarter I/O Stream Member Functions .precision ( ) ; Select output precision, i.e., number of significant digits to be printed. Example: cout.precision (2) ; // two significant digits .width ( ) ; Specify field width. (Can be used on input or output, but only applies to next insertion or extraction). Example: cout.width (4) ; // field is four positions wide

I/O Stream Member Functions:

Lect 27 P. 12 Winter Quarter I/O Stream Member Functions .eof ( ) ; Tests for end-of-file condition. Example: cin.eof ( ) ; // true if eof encountered .fail ( ) ; Tests if a stream operation has failed. Example: cin.fail ( ) ; // true if a format error occurred ! cin; // same as above; true if format error

I/O Stream Member Functions:

Lect 27 P. 13 Winter Quarter I/O Stream Member Functions .clear ( ) ; Normally used to restore a stream's state to "good" so that I/O may proceed or resume on that stream. Example: cin.clear ( ) ; // allow I/O to resume on a "bad" // stream, in this case "cin", // on which error had previously // occurred

Using Manipulators & Member Functions:

Lect 27 P. 14 Winter Quarter Using Manipulators & Member Functions #include <iostream> // No “.h” (standard header) #include <iomanip> // No “.h” (standard header) using namespace std; // To avoid “std::” int main ( ) { int a, b, c = 8, d = 4 ; float k ; char name[30] ; cout << "Enter your name" << endl ; cin.getline ( name, 30 ) ; cout << "Enter two integers and a float " << endl ; cin >> a >> b >> k ;

Using Manipulators & Member Functions:

Lect 27 P. 15 Winter Quarter Using Manipulators & Member Functions // Now, let's output the values that were read in cout << "\nThank you, " << name << ", you entered" << endl << a << ", " << b << ", and " ; cout.width ( 4 ) ; cout.precision ( 2 ) ; cout << k << endl ; // Control the field and precision another way cout << " \ nThank you, " << name << ", you entered" << endl << a << ", " << b << ", and " << setw ( c ) << setprecision ( d ) << k << endl ; }

Example Program Output:

Lect 27 P. 16 Winter Quarter Example Program Output Enter your name R. J. Freuler Enter two integers and a float 12 24 67.85 Thank you, R. J. Freuler, you entered 12, 24, and 68 Thank you, R. J. Freuler, you entered 12, 24, and 67.85

More Input Stream Member Functions:

Lect 27 P. 17 Winter Quarter More Input Stream Member Functions .get ( ) ; Example: char ch ; ch = cin.get ( ) ; // gets one character from keyboard // & assigns it to the variable "ch" .get (character) ; Example: char ch ; cin.get ( ch ) ; // gets one character from // keyboard & assigns to "ch"

More Input Stream Member Functions:

Lect 27 P. 18 Winter Quarter More Input Stream Member Functions .get (array_name, max_size) ; Example: char name[40] ; cin.get ( name, 40 ) ; // Gets up to 39 characters // and inserts a null at the end of the // string "name". If a delimiter is // found, the read terminates. The // delimiter is not stored in the array, // but it is left in the stream.

More Input Stream Member Functions:

Lect 27 P. 19 Winter Quarter More Input Stream Member Functions .getline (array_name, max_size) ; Example: char name[40] ; cin.getline ( name, 40 ) ; // Gets up to 39 characters // and assigns the string to "name". A // null is inserted at the end of the string. // Note that if a delimiter is found, // it is removed from the stream, but it is // not stored in the character array.

More Input Stream Member Functions:

Lect 27 P. 20 Winter Quarter More Input Stream Member Functions .ignore ( ) ; Ex: cin.ignore ( ) ; // gets and discards 1 character cin.ignore ( 2 ) ; // gets and discards 2 characters cin.ignore ( 80, '\n' ) ; // gets and discards up to 80 // characters or until "newline" // character, whichever comes // first

More Input Stream Member Functions:

Lect 27 P. 21 Winter Quarter More Input Stream Member Functions .peek( ) ; Ex: char ch ; ch = cin.peek ( ) ; // peek at (don't take) character .putback( ) ; Ex: char ch ; cin.putback ( ch ) ; // put character back in stream

More I/O Stream Member Functions:

Lect 27 P. 22 Winter Quarter More I/O Stream Member Functions .read( ) ; .write( ) ; Ex: char gross[144] ; cin.read( gross,144 ) ; // reads 144 characters from // input stream. Does NOT // append '\0'

File I/O with C++ :

Lect 27 P. 23 Winter Quarter File I/O with C++ #include <fstream> using namespace std; int main ( ) { int a, b, c ; ifstream fin ; //Create file input stream object fin .open ( "my_input.dat" ) ; //Open input file fin >> a >> b ; //Read two values from input file c = a + b ; ofstream fout ; //Create file output stream object fout .open ( "my_output.dat" ); //Open output file fout << c << endl ; //Write result to output file fin .close ( ) ; //Close input file fout .close ( ) ; //Close output file }

authorStream Live Help