cpp input & output system basics

38
Managing Console I/O Operations Chap 10 1 By:-Gourav Kottawar

Upload: gourav-kottawar

Post on 06-Jan-2017

214 views

Category:

Education


0 download

TRANSCRIPT

Page 1: cpp input & output system basics

Managing Console I/O Operations

Chap 10

1By:-Gourav Kottawar

Page 2: cpp input & output system basics

Contents

• 10.1 C++ Streams, C++ Stream Classes • 10.2 Unformatted I/O Operation • 10.3 Formatted I/O Operation • 10.4 Managing Output with Manipulators

2By:-Gourav Kottawar

Page 3: cpp input & output system basics

Managing Console I/O Operations

• C++ uses the concept of stream and stream classes to implement its I/O operations with the console and disk files.

• C++ support all of C’s rich set of I/O functions.

3By:-Gourav Kottawar

Page 4: cpp input & output system basics

C ++ Stream• Stream is an interface supplied by the I/O

system of C++ between the programmer and the actual device being accessed.

• It will work with devices like terminals, disks and tape drives.

• A stream is a sequence of bytes.• It acts either as a source from which the input

data can be obtained or as a destination to which the output data can be sent.

4By:-Gourav Kottawar

Page 5: cpp input & output system basics

C ++ Stream• Input Stream - The source stream that provides data

to the program.

• Output Stream - The destination stream that receives output from the program.

continue…

Input device

Output device

Program

Input Stream

Output Stream

Extraction from input stream

Insertion into output stream

5By:-Gourav Kottawar

Page 6: cpp input & output system basics

C ++ Stream• The data in the input stream can come from

keyboard or any other storage device.

• The data in the output stream can go to the screen or any other storage device.

continue…

Input device

Output device

Program

Input Stream

Output Stream

Extraction from input stream

Insertion into output stream

6By:-Gourav Kottawar

Page 7: cpp input & output system basics

C ++ Stream Classes• The C++ I/O system contains a hierarchy of

classes that are used to define various streams to deal with both the console and disk files.

• These classes are called stream classes.

• These classes are declared in the header file iostream.

7By:-Gourav Kottawar

Page 8: cpp input & output system basics

C ++ Stream Classesios

istream ostreamstreambuf

iostream

istream_withassign iostream_withassign ostream_withassign

continue…

8By:-Gourav Kottawar

Page 9: cpp input & output system basics

C ++ Stream Classesios

istream ostreamstreambuf

iostream

istream_withassign iostream_withassign ostream_withassign

continue…Provides the basic

support for formatted and unformatted I/O

operations.

Provides the facilities for formatted and unformatted input

Provides the facilities for

formatted outputProvides the facilities for handling both input and output streams.

9By:-Gourav Kottawar

Page 10: cpp input & output system basics

Unformatted I/O OperationsOverloaded Operators >> and <<• The objects cin and cout are used for input

and output of data of various types.• By overloading the operators >> and <<.• >> operator is overloaded in the istream class.• << operator is overloaded in the ostream

class.• This is used for input data through keyboard.

10By:-Gourav Kottawar

Page 11: cpp input & output system basics

Unformatted I/O OperationsOverloaded Operators >> and <<

cin >> variable1 >> varibale2 ... >> variableNwhere variable1, variable2, …, variableN are valid C++

variable names.

cout << item1 << item2 << … << itemNWhere item1, item2, …,itemN may be variables or

constants of an basic type.

11By:-Gourav Kottawar

Page 12: cpp input & output system basics

Unformatted I/O Operationsput( ) and get( ) Functions• get( ) and put( ) are member functions of

istream and ostream classes.• For single character input/output operations.• There are two types of get( ) functions:

– get(char*) Assigns the input character to its argument.

– get(void) Returns the input character.• char c; cin.get(c) c = cin.get( );

– put( ) used to output a line of text, character by character.

• char c; cout.put(‘x’); cout.put(c);

12By:-Gourav Kottawar

Page 13: cpp input & output system basics

#include<iostream.h>int main(){

int i =0;char ch;cout<<“\n Enter data”;cin.get(ch);while(ch!=‘\n’){cout.put(ch);i++;cin.get(ch);}cout<<“\n Number of characters =“<<I;

}

13By:-Gourav Kottawar

Page 14: cpp input & output system basics

#include<iostream.h>int main(){

int i =0;char ch;cout<<“\n Enter data :”;cin.get(ch);while(ch!=‘\n’){cout.put(ch);i++;cin.get(ch);}cout<<“\n Number of characters =“<<I;

}

Output :Enter data : Applying thoughtApplying thoughtsNumber of characters : 17

14By:-Gourav Kottawar

Page 15: cpp input & output system basics

Unformatted I/O Operationsgetline( ) and write( ) Functions• getline( ) function reads a whole line of text

that ends with a newline character.• cin.getline(line, size);• Reading is terminated as soon as either the

newline character ‘\n’ is encountered or size-1 characters are read.

• write( ) function displays an entire line of text.

• cout.write(line, size);• write( ) also used to concatenate strings.

15By:-Gourav Kottawar

Page 16: cpp input & output system basics

#include<iostream.h>int size = 10;int main(){

char name[10];cout<<“\n Can I know u r name :”;cin>>name;cout<<“Name : “<<name;

cout<<“\n Come again :”;cin.getline(name,size);cout<<“Name :- “<<name;

}

16By:-Gourav Kottawar

Page 17: cpp input & output system basics

#include<iostream.h>int main(){

char *s1=“Object”;char *s2=“Oriented”;int a=strlen(s1); int b=strlen(s2);for(int i=0;i<b;i++){

cout.write(s2,i);cout<<“\n”;

}for(i=b;i>0;i--){

cout.write(s2,i);cout<<“\n”;}

// concatenationcout.write(s1,a).write(s2,b);cout<<“\n”;cout.write(s1,10);

}17By:-Gourav Kottawar

Page 18: cpp input & output system basics

Formatted Console I/O Operations

C++ supports a number of features that could be used for formatting the output.These features include:

– ios class functions and flags.– Manipulators.– User-defined output functions.

18By:-Gourav Kottawar

Page 19: cpp input & output system basics

ios member functions

width( ) to specify the required field size for displaying an output value.

precision( ) to specify the number of digits to be displayed after the decimal point of a float value.

fill( ) to specify a character that is used to fill the unused portion of a field.

setf( ) to specify format flags that can control the form of output display.

unsetf( ) to clear the flags specified.

19By:-Gourav Kottawar

Page 20: cpp input & output system basics

20By:-Gourav Kottawar

Page 21: cpp input & output system basics

21By:-Gourav Kottawar

Page 22: cpp input & output system basics

int main(){

int a[4] = {1,2,3,4};int c[4]={10,20,30,40};cout.width(5);cout<<“Items “;cout.width(8);cout<<“Cost”;cout.width(15);cout<“Total “;int sum=0;for(i=0;i<4;i++){

cout.width(5);cout<<a[i];cout.width(8);cout<<c[i];int val=a[i]*c[i];cout.width(15);cout<<value<<endl;sum=sum+val;

}cout<<“\n Grand Total “;

cout.width(2);cout<<sum<<“\n”;}

22By:-Gourav Kottawar

Page 23: cpp input & output system basics

int main(){

int i[4] = {1,2,3,4};int c[4]={10,20,30,40};cout.width(5);cout<<“Items “;cout.width(8);cout<<“Cost”;cout.width(15);cout<“Total “;int sum=0;for(i=0;i<4;i++){

cout.width(5);cout<<i[i];cout.width(8);cout<<c[i];int val=i[i]*c[i];cout.width(15);cout<value>endl;sum=sum+val;

}cout<<“\n Grand Total “;

cout.width(2);cout<<sum<<“\n”;}

Output :Items Cost Total110 10220 40330 90440 160Grand total = 300

23By:-Gourav Kottawar

Page 24: cpp input & output system basics

#include<iostream.h>#include<math.h>int main(){

cout.precision(3); // 3 digit precisioncout.width(10);cout<<“value”;cout.width(15);cout<<“Sqrt of value “<<“\n;for(int i=1;i<=5;i++){cout.width(8);cout<<“\n”;cout.width(13);cout<<sqrt(i); cout<<“\n”;cout.precision(5); // 5 digits precisioncout<<“Sqrt(10) = “<<sqrt(10)<<“\n”;cout.precision(0); // default settingcout<<“Sqrt(10) =“ << sqrt(10) “ (default setting)\n”;}

}

24By:-Gourav Kottawar

Page 25: cpp input & output system basics

ManipulatorsManipulators are special functions that can be included in the I/O statement to alter the format parameters of a stream.

To access manipulators, the file iomanip.h should be included in the program.

– setw( )– setprecision( )– setfill( )– setiosflags( )– resetiosflags( )

25By:-Gourav Kottawar

Page 26: cpp input & output system basics

width( ) Defining Field WidthTo define the width of a field necessary for the output of an item.Since it is a member function, we have to use an object to invoke it.

cout.width(w)Where w is the field width (number of columns).The output will be printed in a field of w characters wide at the right end of the field.

26By:-Gourav Kottawar

Page 27: cpp input & output system basics

width( ) Defining Field WidthThe width( ) function can specify the field width for only one item – item that follows immediately.cout.width(5);cout << 543 << 12 <<“\n”;

cout.width(5);cout << 543;cout.width(5);cout << 12 << “\n”;

5 4 3 1 2

5 4 3 1 2

The field should be specified for each item separately.

27By:-Gourav Kottawar

Page 28: cpp input & output system basics

precision( ) Setting Precision

• Used to specify the number of digits to be displayed after the decimal point while printing the floating-point numbers.

• By default, the floating numbers are printed with six digits after the decimal point.

• cout.precision(d);– Where d is the number of digits to the right of the decimal

point.cout.precision(3);cout << sqrt(2) << endl;cout << 3.14159 << endl;cout <<2.50032 << endl;

1.141 truncated3.142 rounded2.5 o trailing zeros

28By:-Gourav Kottawar

Page 29: cpp input & output system basics

precision( ) Setting Precision• Unlike width( ), precision ( ) retains the setting

in effect until it is reset.

• We can also combine the field specification with the precision setting.

cout.precision(2);cout.width(5);cout << 1.2345;

1 . 2 3

29By:-Gourav Kottawar

Page 30: cpp input & output system basics

fill( ) Filling and Padding• When printing values with larger field width

than required by the values, the unused positions of the field are filled with white spaces, by default.

• fill( ) function can be used to fill the unused positions by any desired character.

cout.fill(ch);where ch represents the character which is used for filling the unused positions.

cout.fill(‘ * ’);cout.wdith(10);cout << 5250 << endl;

* * * * * 5 05 2*

Like precision( ), fill( ) stays in effect till we change it.

30By:-Gourav Kottawar

Page 31: cpp input & output system basics

setf( ) Formatting Flags, Bit-fields• When the function width( ) is used, the value

will be printed right-justified in the created width.

• setf( )function is used to print values in left-justified.

• cout.setf(arg1, arg2)eg: cout.fill(‘ * ’);

cout.setf(ios :: left, ios :: adjustfield);cout.wdith(10);cout << “TABLE 1” << endl;

T A B L E * *1 *

arg1 is formatting flags defined in the class ios and arg2 is bit field constant in

the ios class.

31By:-Gourav Kottawar

Page 32: cpp input & output system basics

setf( ) Formatting Flags, Bit-fields

• When the function width( ) is used, the value will be printed right-justified in the created width.

• setf( )function is used to print values in left-justified.

• cout.setf(arg1, arg2)eg: cout.fill(‘ * ’);

cout.setf(ios :: left, ios :: adjustfield);cout.wdith(10);cout << “TABLE 1” << endl;

T A B L E * *1 *

arg1 is formatting flags defined in the class ios and arg2 is bit field constant in

the ios class.

The formatting flag specifies the format action

required for the output.

Bit field specifies the group to which the

formatting flag belongs.

32By:-Gourav Kottawar

Page 33: cpp input & output system basics

Managing Output with Manipulators• The header file iomanip provides a set of

functions called manipulators which can be used to manipulate the output formats.

• Some manipulators are more convenient to use than the member functions and flags of ios.

• Two or more manipulators can be used as a chain in one statement.

cout << manip1 << manip2 << maip3 << item;cout << manip1 << item1 << manip2 << item2;

33By:-Gourav Kottawar

Page 34: cpp input & output system basics

Managing Output with Manipulators

• Manipulators and their meanings

cout << setw(5) << setprecision(2) << 1.2345 << setw(10) << setprecision(4) << sqrt(2);

• We can jointly use the manipulators and the ios functions in a program.

Manipulators Meaning Equivalent

setw(int w) Set the field width to w width( )

setprecision(int d) Set floating point precision to d precision( )

setfill( int c) Set the fill character to c fill( )

34By:-Gourav Kottawar

Page 35: cpp input & output system basics

Manipulators & ios Member Functions

• The ios member function return the previous format state which can be used later.

• But the manipulator does not return the previous format state.

cout.precision(2); // previous state.

int p =cout.precision(4); // current state, p=2.

cout.precision(p); // change to previous state

35By:-Gourav Kottawar

Page 36: cpp input & output system basics

Designing Our Own Manipulators

• We can design our own manipulators for certain special purposes.

ostream & manipulator ( ostream & output){

……… (code)return output;

}ostream & unit (ostream & output){

output << “inches”;return output;

}cout << 36 << unit; will produce “36 inches”.

36By:-Gourav Kottawar

Page 37: cpp input & output system basics

Designing Our Own ManipulatorsWe can also create manipulators that could represent a sequence of operations:ostream & show (ostream & output){ output.setf(ios::showpoint); output.setf(ios::showpos); output << setw(10); return output;}This function defines a manipulator called show that turns on the flags showpoint and showpos declared in the class ios and sets the field width to 10.

37By:-Gourav Kottawar

Page 38: cpp input & output system basics

Thank You

38By:-Gourav Kottawar