Today s objectives
This presentation is the property of its rightful owner.
Sponsored Links
1 / 36

Today’s Objectives PowerPoint PPT Presentation


  • 93 Views
  • Uploaded on
  • Presentation posted in: General

17-Jul-2006. 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

Download Presentation

Today’s Objectives

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Today s objectives

17-Jul-2006

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


Stream input output

Stream Input/Output

Chapter 15


Streams

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

Streams

  • 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


I o in c

Stream I/O (Deitel, 771–772)

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


Header files

Stream I/O (Deitel, 772)

Header 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 classes

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

Stream 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


Global stream objects

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

Global 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 output

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

Stream 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 input

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

Stream 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 class

    get, getline

    ignore

    eof, gcount

    putback, peek


Using get

Stream I/O (Deitel, 776–780)

Using get()

  • Used with no arguments, it inputs one char

    char c = cin.get();

  • Can be used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

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


Using get1

Stream I/O (Deitel, 776–780)

Using get()

  • Used with no arguments, it inputs one char

    char c = cin.get();

  • Can be used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

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

cin

\n

l

l

e

o

H

buffer


Using get2

H

Stream I/O (Deitel, 776–780)

Using get()

  • Used with no arguments, it inputs one char

    char c = cin.get();

  • Can be used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

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

cin

l

o

l

\n

e

buffer


Using get3

H

e

Stream I/O (Deitel, 776–780)

Using get()

  • Used with no arguments, it inputs one char

    char c = cin.get();

  • Can be used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

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

cin

o

\n

l

l

buffer


Using get4

H

e

l

Stream I/O (Deitel, 776–780)

Using get()

  • Used with no arguments, it inputs one char

    char c = cin.get();

  • Can be used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

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

cin

\n

o

l

buffer


Using get5

H

e

l

l

Stream I/O (Deitel, 776–780)

Using get()

  • Used with no arguments, it inputs one char

    char c = cin.get();

  • Can be used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

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

cin

\n

o

buffer


Using get6

H

e

l

l

o

Leaves the delimiter in the stream

Stream I/O (Deitel, 776–780)

Using get()

  • Used with no arguments, it inputs one char

    char c = cin.get();

  • Can be used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

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

cin

\n

buffer


Using get7

H

e

l

l

o

\0

Stream I/O (Deitel, 776–780)

Using get()

  • Used with no arguments, it inputs one char

    char c = cin.get();

  • Can be used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

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

cin

\n

Inserts ‘\0’ terminator

buffer


Using getline

Stream I/O (Deitel, 776–780)

Using getline()

  • Used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

      cin.getline(buffer,1024);


Using getline1

Stream I/O (Deitel, 776–780)

Using getline()

  • Used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

      cin.getline(buffer,1024);

cin

\n

l

l

e

o

H

buffer


Using getline2

H

Stream I/O (Deitel, 776–780)

Using getline()

  • Used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

      cin.getline(buffer,1024);

cin

l

o

l

\n

e

buffer


Using getline3

H

e

Stream I/O (Deitel, 776–780)

Using getline()

  • Used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

      cin.getline(buffer,1024);

cin

o

\n

l

l

buffer


Using getline4

H

e

l

Stream I/O (Deitel, 776–780)

Using getline()

  • Used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

      cin.getline(buffer,1024);

cin

\n

o

l

buffer


Using getline5

H

e

l

l

Stream I/O (Deitel, 776–780)

Using getline()

  • Used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

      cin.getline(buffer,1024);

cin

\n

o

buffer


Using getline6

H

e

l

l

o

Discards the delimiter in the stream

Stream I/O (Deitel, 776–780)

Using getline()

  • Used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

      cin.getline(buffer,1024);

cin

\n

buffer


Using getline7

H

e

l

l

o

\0

Stream I/O (Deitel, 776–780)

Using getline()

  • Used with three arguments

    • char array

    • size limit

    • delimiter char (optional: default is ‘\n’)

      char buffer[1024];

      cin.getline(buffer,1024);

cin

Inserts ‘\0’ terminator

buffer


Using read and write

Stream I/O (Deitel, 776–780)

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

  • Example

    char buffer[1024];

    cin.read( buffer, 5 );

    cout.write( buffer, 5 );


Stream error states

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

Stream 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


Determining the stream state

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

Determining 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


Example checking stream state

Stream I/O

Example: 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 flags

cin >> c; //something is still in the stream

cout << "You entered " << c << '\n';

}

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

}

}


Stream manipulators

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

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

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

Stream Manipulators

  • Special objects used to format a stream

  • Used with the stream insertion operator or stream extraction operator

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


Some stream manipulators

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

Some Stream Manipulators


Member functions for formatting

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

Member 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);


Bonus lab 8

Bonus Lab 8

Debugging with MS Visual Studio

Ford and Teorey, Ch. 5


Debugging methods

Debugging (Ford)

Debugging 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


Using the ms visual studio interactive debugger

Debugging (Ford)

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


References

References

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.


  • Login