+ All Categories
Home > Documents > 1 Today’s Objectives Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It...

1 Today’s Objectives Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It...

Date post: 17-Jan-2016
Category:
Upload: charlene-wilcox
View: 213 times
Download: 0 times
Share this document with a friend
Popular Tags:
36
1 Today’s Objectives Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism, templates, and stream I/O Homework 5 is due on next Monday, July 24. Since this date is so close to the end of the semester, no late assignments will be accepted and email will NOT be accepted! Stream Input/Output (Ch. 15) Streams I/O in C++ with streams Stream error states Stream manipulators Bonus Lab 8 – Debugging with MS Visual Studio 17-Jul-2006
Transcript
Page 1: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

1

Today’s ObjectivesToday’s Objectives

Announcements• Turn in Homework 4• Quiz 4 will be on Wednesday, July 19 – It will have questions about

inheritance, polymorphism, templates, and stream I/O• Homework 5 is due on next Monday, July 24. Since this date is so close to

the end of the semester, no late assignments will be accepted and email will NOT be accepted!

Stream Input/Output (Ch. 15)• Streams• I/O in C++ with streams• Stream error states• Stream manipulators

Bonus Lab 8 – Debugging with MS Visual Studio

17-Jul-200617-Jul-2006

Page 2: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

2

Stream Input/OutputStream Input/Output

Chapter 15

Page 3: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

3

StreamsStreams

Stream = a sequence of bytes• Just like a water-filled stream, a C++ stream has a flow,

it can be directed, and it can be stopped. But it cannot flow backwards.

In C++, I/O is accomplished by using streams• A C++ stream is an object – it’s instantiated from a

class, just like any other object• Output – the bytes flow from memory to an output

device• Input – the bytes flow from an input device to memory

Stream I/O (Deitel, 771; Josuttis, 584)Stream I/O (Deitel, 771; Josuttis, 584)

Page 4: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

4

I/O in C++I/O in C++

Low-level I/O is unformatted I/O• Specifies the number of bytes to transfer• Example: member functions such as “get”, “put”,

“read”, and “write”

High-level I/O is formatted I/O• Uses bytes in groups corresponding to built-in data

types• Example:int n;cin >> n;

wchar_t = a C++ data type used to store Unicode characters

Stream I/O (Deitel, 771–772)Stream I/O (Deitel, 771–772)

Page 5: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

5

Header FilesHeader Files

<iostream>• Basic stream I/O services• Defines objects: cout, cin, cerr, and clog

<iomanip>• Services for formatted I/O with stream

manipulators

<fstream>• Services for file I/O

Stream I/O (Deitel, 772)Stream I/O (Deitel, 772)

Page 6: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

6

Stream I/O ClassesStream I/O Classes

Different classes are used to create stream objects for each type of I/O, Fig. 15.1, page 773

istream• Defines input streams• Instantiation of the template class basic_istream<>

using char as the type parameter

ostream• Defines output streams• Instantiation of the template class basic_ostream<>

using char as the type parameter

Stream I/O (Deitel, 772–773; Josuttis, 585)Stream I/O (Deitel, 772–773; Josuttis, 585)

Page 7: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

7

Global Stream ObjectsGlobal Stream Objects

cin• Predefined object of the istream class• Used for standard user input, normally connected to the keyboard

cout• Predefined object of the ostream class• Used for standard user output, normally connected to the monitor

cerr• Predefined object of the ostream class• Used for error messages, not buffered, normally connected to the monitor

clog• Predefined object of the ostream class• Used for logging messages, buffered, normally connected to the same

device as cerr

Stream I/O (Deitel, 772–773; Josuttis, 585)Stream I/O (Deitel, 772–773; Josuttis, 585)

Page 8: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

8

Stream OutputStream Output

operator<<• Stream insertion operator• Overloaded for output to ostream objects• It’s typesafe because it’s overloaded for all the built-in

data types, and it can be overloaded for our own classes

Member function put• Member function of the ostream class• Used to output single chars• Examples

cout.put( 'A' );cout.put( 65 ); //Using the ASCII value

Stream I/O (Deitel, 775–776; Josuttis, 586)Stream I/O (Deitel, 775–776; Josuttis, 586)

Page 9: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

9

Stream InputStream Input

operator>>• Stream extraction operator• Overloaded for input from istream objects• It’s typesafe because it’s overloaded for all the built-in

data types, and it can be overloaded for our own classes

• Ignores whitespace and leaves it in the stream

Member functions of the istream classget, getlineignoreeof, gcountputback, peek

Stream I/O (Deitel, 776–780; Josuttis, 586)Stream I/O (Deitel, 776–780; Josuttis, 586)

Page 10: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

10

Using get()Using get()

Used with no arguments, it inputs one charchar c = cin.get();

Can be used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.get(buffer,1024,'\n');

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 11: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

11

Using get()Using get()

Used with no arguments, it inputs one charchar c = cin.get();

Can be used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.get(buffer,1024,'\n');

buffer

\nHe l l o

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 12: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

12

Using get()Using get()

Used with no arguments, it inputs one charchar c = cin.get();

Can be used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.get(buffer,1024,'\n');

buffer H

el l o\n

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 13: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

13

Using get()Using get()

Used with no arguments, it inputs one charchar c = cin.get();

Can be used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.get(buffer,1024,'\n');

buffer H

ll o \n

e

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 14: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

14

Using get()Using get()

Used with no arguments, it inputs one charchar c = cin.get();

Can be used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.get(buffer,1024,'\n');

buffer H

lo\n

e l

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 15: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

15

Using get()Using get()

Used with no arguments, it inputs one charchar c = cin.get();

Can be used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.get(buffer,1024,'\n');

buffer H

o\n

e l l

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 16: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

16

Using get()Using get()

Used with no arguments, it inputs one charchar c = cin.get();

Can be used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.get(buffer,1024,'\n');

buffer H

\n

e l l o

Leaves the delimiter in the stream

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 17: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

17

Using get()Using get()

Used with no arguments, it inputs one charchar c = cin.get();

Can be used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.get(buffer,1024,'\n');

buffer

cin

H

\n

e l l o \0Inserts ‘\0’ terminator

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 18: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

18

Using getline()Using getline()

Used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.getline(buffer,1024);

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 19: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

19

Using getline()Using getline()

Used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.getline(buffer,1024);

buffer

\nHe l l o

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 20: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

20

Using getline()Using getline()

Used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.getline(buffer,1024);

buffer H

el l o\n

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 21: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

21

Using getline()Using getline()

Used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.getline(buffer,1024);

buffer H

ll o \n

e

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 22: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

22

Using getline()Using getline()

Used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.getline(buffer,1024);

buffer H

lo\n

e l

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 23: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

23

Using getline()Using getline()

Used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.getline(buffer,1024);

buffer H

o\n

e l l

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 24: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

24

Using getline()Using getline()

Used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.getline(buffer,1024);

buffer H

\n

e l l o

Discards the delimiter in the stream

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 25: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

25

Using getline()Using getline()

Used with three arguments1. char array2. size limit3. delimiter char (optional: default is ‘\n’)

char buffer[1024];cin.getline(buffer,1024);

buffer H e l l o \0Inserts ‘\0’ terminator

cin

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 26: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

26

Using read() and write()Using read() and write()

Input• Member function read of the istream class• Inputs bytes into a char array

Output• Member function write of the ostream class• Outputs bytes in a char array

Examplechar buffer[1024];cin.read( buffer, 5 );cout.write( buffer, 5 );

Stream I/O (Deitel, 776–780)Stream I/O (Deitel, 776–780)

Page 27: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

27

Stream Error StatesStream Error States

A data member of the stream objects identifies whether I/O was successful with the following values

goodbit = everything okay, normally set to 0

eofbit = end-of-file encountered

failbit = operation not successful, but the stream is okay, e.g. char in the stream instead of an integer

badbit = operation not successful, because stream is corrupted or lost, e.g. reading past the end of a file

Stream I/O (Deitel, 766–768; Josuttis 597)Stream I/O (Deitel, 766–768; Josuttis 597)

Page 28: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

28

Determining the Stream StateDetermining the Stream State

Use the following member functions to determine the state of the flags

good() = returns true if the stream is okay

eof() = returns true if the end-of-file was encountered

fail() = returns true if there was an I/O error

operator! = same as fail()

bad() = returns true if there was a fatal error

clear() = clears all flags

Stream I/O (Deitel, 797–799; Josuttis 597)Stream I/O (Deitel, 797–799; Josuttis 597)

Page 29: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

29

Example: Checking Stream StateExample: Checking Stream State

int main(){ int n = 1; char c = 'x';

while( n > 0 ){cout << "Enter an integer: ";cin >> n;if( !cin ){ //check the failbit

cout << "That was not an integer!\n";cin.clear(); //clear the flagscin >> c; //something is still in the streamcout << "You entered " << c << '\n';

}else cout << "You entered " << n << '\n';

}}

Stream I/OStream I/O

Page 30: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

30

Stream ManipulatorsStream Manipulators

Special objects used to format a stream Used with the stream insertion operator or stream

extraction operator

Stream I/O (Deitel, 781–796; Josuttis, 586)Stream I/O (Deitel, 781–796; Josuttis, 586)

cout << setw(10) << right << "Hello" << endl;

Manipulators that do not require arguments will not need an extra header file.

Manipulators that require arguments will need the <iomanip> header file.

Page 31: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

31

Some Stream ManipulatorsSome Stream Manipulators

Manipulator Meaning

setw() Set the width of the output

left Left-justify the output

right Right-justify the output

setprecision() Set the number of digits to the right of the decimal point in floating point numbers

showpoint Specifying that floating point numbers are always output with a decimal point

fixed Use fixed-point notation for the output format of floating point numbers

scientific Use scientific notation for the output of floating point numbers

uppercase Set the ‘E’ in scientific notation to uppercase

Stream I/O (Deitel, 781–796; Josuttis, 586)Stream I/O (Deitel, 781–796; Josuttis, 586)

Page 32: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

32

Member Functions for FormattingMember Functions for Formatting

Streams have member functions that can be used to set their format

• Can be used in combination with stream manipulators• Some member functions do the same thing as the manipulators

Examples:

width(n) • Sets the width of the output to n• Equivalent to the “setw(n)” stream manipulator• cout.width(10);

precision(n) • Sets the width of the output to n• Equivalent to the “setprecision(n)” stream manipulator• cout.precision(2);

Stream I/O (Deitel, 781–796; Josuttis, 586)Stream I/O (Deitel, 781–796; Josuttis, 586)

Page 33: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

33

Bonus Lab 8Bonus Lab 8

Debugging with MS Visual Studio

Ford and Teorey, Ch. 5

Page 34: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

34

Debugging MethodsDebugging Methods

Semantic errors• Logic errors in your code• Examples: code that creates an infinite loop, off-by-

one error

Interactive debugger• Can run your program line by line• You can stop program execution at any point and

examine the values of its variables

Debugging (Ford)Debugging (Ford)

Page 35: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

35

Using the MS Visual StudioInteractive Debugger

Using the MS Visual StudioInteractive Debugger

Use “Debug” mode Step Into

• Executes the next statement• Will start at the first line in main if there’s no breakpoint• If the next statement is a function call, it will enter the function

The yellow arrow• Points to the next statement that will be executed

Step Over• Executes the next statement• If the next statement is a function call, it will skip over the function

Step Out• Will finish execution of a function and run to the next statement

Breakpoint• The line where you want your program to stop execution• Set by clicking in the margin at the left of the line of code

Variables pane• Displays a list of current variables and their values• Auto, Locals, and Watch tabs

Debugging (Ford)Debugging (Ford)

Page 36: 1 Today’s Objectives  Announcements Turn in Homework 4 Quiz 4 will be on Wednesday, July 19 – It will have questions about inheritance, polymorphism,

36

ReferencesReferences

Deitel, H. M., and P. J. Deitel, C++ How to Program, Fifth Edition. Upper Saddle River, NJ: Prentice Hall, 2005.

Ford, A. R., and T. J. Teorey, Practical Debugging in C++. Upper Saddle River, NJ: Prentice Hall, 2002.

Josuttis, Nicolai M., The C++ Standard Library, A Tutorial and Reference. Boston: Addison-Wesley, 1999.


Recommended