Lect 27	P. 1Winter QuarterC++ I/O Manipulation
Lect 27	P. 2Note:	There is no “.h” on standard header files.			Be careful about “using namespace std”iostream -- contains basic information required for all stream I/O operationsiomanip -- contains information useful for performing formatted I/O with parameterized stream manipulatorsfstream -- contains information for performing file I/O operationsstrstream -- contains information for performing in-memory I/O operations (i.e., into or from strings in memory)Winter QuarterStream I/O Library Header Files
Lect 27	P. 3ios is the base class.istream and ostream inherit from iosifstream inherits from istream (and ios)ofstream inherits from ostream (and ios)iostream inherits from istream and ostream (& ios)fstream inherits from ifstream, iostream, and ofstreamWinter QuarterClasses for Stream I/O in C++
Lect 27	P. 4C++ provides various stream manipulators that perform formatting tasks.Stream manipulators are defined in <iomanip>These manipulators provide capabilities forsetting field widths,setting precision,setting and unsetting format flags,flushing streams,inserting a "newline" and flushing output stream,skipping whitespace in input streamWinter QuarterC++ Stream I/O -- Stream Manipulators
Lect 27	P. 5setprecision ( )Select output precision, i.e., number of significant digits to be printed.Example:	cout << setprecision (2) ;   // two significant digitssetw ( ) 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 wideWinter QuarterC++ Stream I/O -- Stream Manipulators
Lect 27	P. 6Winter QuarterC++ Stream I/O -- Stream Format StatesVarious 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.
Lect 27	P. 7Stream I/O Format State Flagsios::showpoint	when set, show trailing decimal				 point and zerosios::showpos	when set, show the + sign before				positive numbersios::basefield			ios::dec		use base ten    	ios::oct		use base eight	ios::hex		use base sixteenWinter Quarter
Lect 27	P. 8Winter QuarterStream I/O Format State Flagsios::floatfield	ios::fixed		use fixed number of digits	ios::scientific	use "scientific" notationios::adjustfield	ios::left		use left justification	ios::right		use right justification	ios::internal	left justify the sign, but right				justify the value  
Lect 27	P. 9ios::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() ]Winter QuarterStream I/O Format State Flags
Lect 27	P. 10.setf ( )Allows the setting of an I/O stream format flag.Examples:	// To show the + sign in front of positive numberscout.setf (ios::showpos) ; 	// To output the number in hexadecimal	cout.setf (ios::hex, ios::basefield) ;  Winter QuarterI/O Stream Member Functions
Lect 27	P. 11.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 wideWinter QuarterI/O Stream Member Functions
Lect 27	P. 12.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 errorWinter QuarterI/O Stream Member Functions
Lect 27	P. 13.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				   // occurredWinter QuarterI/O Stream Member Functions
Lect 27	P. 14#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 ;Winter QuarterUsing Manipulators & Member Functions
Lect 27	P. 15// Now, let's output the values that were read incout<< "\nThank you, " << name <<  ", you entered"<<endl<<  a  <<   ", "  <<  b  <<  ", and " ;cout.width (4) ;cout.precision (2) ;cout<< k <<endl;//  Control the field and precision another waycout<<"\nThank you, " << name << ", you entered"<<endl<<  a << ", " <<  b << ", and " <<setw(c)<<setprecision(d)<< k <<endl; }Winter QuarterUsing Manipulators & Member Functions
Lect 27	P. 16Winter QuarterExample Program OutputEnter 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
Lect 27	P. 17.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"Winter QuarterMore Input Stream Member Functions
Lect 27	P. 18Winter QuarterMore 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.
Lect 27	P. 19.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. Winter QuarterMore Input Stream Member Functions
Lect 27	P. 20More Input Stream Member Functions.ignore ( ) ;Ex:cin.ignore ( ) ;	// gets and discards 1 charactercin.ignore(2) ;	// gets and discards 2 characterscin.ignore (80, '\n');	// gets and discards up to 80			              	// characters or until "newline"					// character, whichever comes					// firstWinter Quarter
Lect 27	P. 21More 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 streamWinter Quarter
Lect 27	P. 22More I/O Stream Member FunctionsWinter Quarter.read(  ) ;  .write( ) ;Ex:char gross[144] ;cin.read(gross,144); // reads 144 characters from			                   // input stream.  Does NOT                                         // append '\0'
Lect 27	P. 23File 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}Winter Quarter

C++ io manipulation

  • 1.
    Lect 27 P. 1WinterQuarterC++ I/O Manipulation
  • 2.
    Lect 27 P. 2Note: Thereis no “.h” on standard header files. Be careful about “using namespace std”iostream -- contains basic information required for all stream I/O operationsiomanip -- contains information useful for performing formatted I/O with parameterized stream manipulatorsfstream -- contains information for performing file I/O operationsstrstream -- contains information for performing in-memory I/O operations (i.e., into or from strings in memory)Winter QuarterStream I/O Library Header Files
  • 3.
    Lect 27 P. 3iosis the base class.istream and ostream inherit from iosifstream inherits from istream (and ios)ofstream inherits from ostream (and ios)iostream inherits from istream and ostream (& ios)fstream inherits from ifstream, iostream, and ofstreamWinter QuarterClasses for Stream I/O in C++
  • 4.
    Lect 27 P. 4C++provides various stream manipulators that perform formatting tasks.Stream manipulators are defined in <iomanip>These manipulators provide capabilities forsetting field widths,setting precision,setting and unsetting format flags,flushing streams,inserting a "newline" and flushing output stream,skipping whitespace in input streamWinter QuarterC++ Stream I/O -- Stream Manipulators
  • 5.
    Lect 27 P. 5setprecision( )Select output precision, i.e., number of significant digits to be printed.Example: cout << setprecision (2) ; // two significant digitssetw ( ) 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 wideWinter QuarterC++ Stream I/O -- Stream Manipulators
  • 6.
    Lect 27 P. 6WinterQuarterC++ Stream I/O -- Stream Format StatesVarious 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.
  • 7.
    Lect 27 P. 7StreamI/O Format State Flagsios::showpoint when set, show trailing decimal point and zerosios::showpos when set, show the + sign before positive numbersios::basefield ios::dec use base ten ios::oct use base eight ios::hex use base sixteenWinter Quarter
  • 8.
    Lect 27 P. 8WinterQuarterStream I/O Format State Flagsios::floatfield ios::fixed use fixed number of digits ios::scientific use "scientific" notationios::adjustfield ios::left use left justification ios::right use right justification ios::internal left justify the sign, but right justify the value  
  • 9.
    Lect 27 P. 9ios::eofbit setwhen 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() ]Winter QuarterStream I/O Format State Flags
  • 10.
    Lect 27 P. 10.setf( )Allows the setting of an I/O stream format flag.Examples: // To show the + sign in front of positive numberscout.setf (ios::showpos) ; // To output the number in hexadecimal cout.setf (ios::hex, ios::basefield) ; Winter QuarterI/O Stream Member Functions
  • 11.
    Lect 27 P. 11.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 wideWinter QuarterI/O Stream Member Functions
  • 12.
    Lect 27 P. 12.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 errorWinter QuarterI/O Stream Member Functions
  • 13.
    Lect 27 P. 13.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 // occurredWinter QuarterI/O Stream Member Functions
  • 14.
    Lect 27 P. 14#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 ;Winter QuarterUsing Manipulators & Member Functions
  • 15.
    Lect 27 P. 15//Now, let's output the values that were read incout<< "\nThank you, " << name << ", you entered"<<endl<< a << ", " << b << ", and " ;cout.width (4) ;cout.precision (2) ;cout<< k <<endl;// Control the field and precision another waycout<<"\nThank you, " << name << ", you entered"<<endl<< a << ", " << b << ", and " <<setw(c)<<setprecision(d)<< k <<endl; }Winter QuarterUsing Manipulators & Member Functions
  • 16.
    Lect 27 P. 16WinterQuarterExample Program OutputEnter 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
  • 17.
    Lect 27 P. 17.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"Winter QuarterMore Input Stream Member Functions
  • 18.
    Lect 27 P. 18WinterQuarterMore 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.
  • 19.
    Lect 27 P. 19.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. Winter QuarterMore Input Stream Member Functions
  • 20.
    Lect 27 P. 20MoreInput Stream Member Functions.ignore ( ) ;Ex:cin.ignore ( ) ; // gets and discards 1 charactercin.ignore(2) ; // gets and discards 2 characterscin.ignore (80, '\n'); // gets and discards up to 80 // characters or until "newline" // character, whichever comes // firstWinter Quarter
  • 21.
    Lect 27 P. 21MoreInput 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 streamWinter Quarter
  • 22.
    Lect 27 P. 22MoreI/O Stream Member FunctionsWinter Quarter.read( ) ; .write( ) ;Ex:char gross[144] ;cin.read(gross,144); // reads 144 characters from // input stream. Does NOT // append '\0'
  • 23.
    Lect 27 P. 23FileI/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}Winter Quarter