C++ How to Program, 4/e Tour of the Book (Continued)
Chapter 13 Exception Handling
Discusses how exception handling
enables programmers to write programs that are robust, fault tolerant and
appropriate for business-critical and mission-critical environments. The
chapter discusses when exception handling is appropriate; introduces the basic
capabilities of exception handling with
try blocks,
throw statements and
catch blocks;
indicates how and when to rethrow an exception; explains how to write an
exception specification and process unexpected exceptions; and discusses the
important ties between exceptions and constructors, destructors and
inheritance. The exercises in this chapter show the student the diversity and
power of C++'s exception-handling capabilities. We discuss rethrowing an
exception, and we illustrate both ways
new can fail when memory is exhausted. Prior to
the C++ draft standard, new
failed by returning 0,
much as malloc
fails in C by returning a NULL
pointer value.We show the new style of
new failing by throwing a
bad_alloc (bad
allocation) exception. We illustrate how to use
set_new_handler to
specify a custom function to be called to deal with memory-exhaustion
situations. We discuss how to use the
auto_ptr class template to
delete dynamically
allocated memory implicitly, thus avoiding memory leaks. To conclude this
chapter, we present the standard library exception hierarchy.
Chapter 14 File Processing
Discusses techniques for processing text
files with sequential access and random access. The chapter begins with an
introduction to the data hierarchy from bits, to bytes, to fields, to records
and to files. Next, we present the C++ view of files and streams. We discuss
sequential-access files and build programs that show how to open and close
files, how to store data sequentially in a file and how to read data
sequentially from a file. We then discuss random-access files and build
programs that show how to create a file for random access, how to read and
write data to a file with random access and how to read data sequentially from
a randomly accessed file. The fourth random-access program combines the
techniques of accessing files both sequentially and randomly into a complete
transaction-processing program. Students in our industry seminars have
mentioned that, after studying the material on file processing, they were able
to produce substantial file-processing programs that were immediately useful
in their organizations. The exercises ask the student to implement a variety
of programs that build and process both sequential-access files and
random-access files.
Chapter 15 Class string and String Stream Processing
The chapter also
discusses C++'s capabilities for inputting data from strings in memory and
outputting data to strings in memory; these capabilities often are referred to
as in-core formatting or string-stream processing. Class
string is a
required component of the standard library. We preserved the treatment of
C-like strings in Chapter and later for several reasons. First, it
strengthens the reader's understanding of pointers. Second, for the next
decade or so, C++ programmers will need to be able to read and modify the
enormous amounts of C legacy code that has accumulated over the last quarter
of a centurythis code processes strings as pointers, as does a large portion
of the C++ code that has been written in industry over the last many years. In
Chapter we discuss string
assignment, concatenation and comparison. We show how to determine various
string
characteristics such as a string's
size, capacity and whether or not it is empty. We discuss how to resize a
string. We
consider the various find functions that enable us to find a substring
in a string
(searching the string
either forwards or backwards), and we show how to find either the first
occurrence or last occurrence of a character selected from a
string of
characters, and how to find the first occurrence or last occurrence of a
character that is not in a selected
string of characters. We show how to replace, erase
and insert characters in a string.
We show how to convert a string
object to a C-style char
* string.
Chapter 16 Web Programming with CGI
This new chapter has everything
you need to begin developing your own Web-based applications that will really
run on the Internet! You will learn how to build so-called n-tier
applications, in which the functionality provided by each tier can be
distributed to separate computers across the Internet or executed on the same
computer. In particular, we build a three-tier online bookstore application.
The bookstore's information is stored in the application's bottom tier, also
called the data tier. In industrial-strength applications, the data tier is
typically a database such as Oracle, Microsoft® SQL Server or MySQL.
For simplicity, we use text files and employ the file-processing techniques of
Chapter 14 to access these files. The user enters requests and receives
responses at the application's top tier, also called the user-interface tier
or the client tier, which is typically a computer running a popular Web
browser such as Microsoft Internet Explorer or Netscape®. Web
browsers, of course, know how to communicate with Web sites throughout the
Internet. The middle tier, also called the business-logic tier, contains both
a Web server and an application specific C++ program (e.g., our bookstore
application). The Web server communicates with the C++ program (and vice
versa) via the CGI (Common Gateway Interface) protocol. This program is
referred to as a CGI script. We use the popular Apache Web server, which is
available free for download from the Apache Web site,
www.apache.org.
Apache Installation instructions for many popular platforms, including Linux
and Windows systems, are available at that site and at
www.deitel.com and
www.prenhall.com/deitel.
The Web server knows how to talk to the client tier across the Internet using
a protocol called HTTP (Hypertext Transfer Protocol). We discuss the two most
popular HTTP methods for sending data to a Web serverGET
and POST. We
then discuss the crucial role of the Web server in Web programming and provide
a simple example that requests an Extensible HyperText Markup Language (XHTML)
document from a Web server. We discuss CGI and how it allows a Web server to
communicate with the top tier and CGI applications. We provide a simple
example that gets the server's time and renders it in a browser. Other
examples demonstrate how to process form-based user input via the string
processing techniques introduced in Chapter 15. In our forms-based examples we
use buttons, password fields, check boxes and text fields. We present an
example of an interactive portal for a travel company that displays airfares
to various cities. Travel-club members can log in and view discounted
airfares. We also discuss various methods of storing client-specific data,
which include hidden fields (i.e., information stored in a Web page but not
rendered by the Web browser) and cookiessmall text files that the browser
stores on the client's machine. The chapter examples conclude with a case
study of an online book store that allows users to add books to a shopping
cart. This case study contains several CGI scripts that interact to form a
complete application. The online book store is password protected, so users
first must log in to gain access. The chapter's Web resources include
information about the CGI specification, C++ CGI libraries and Web sites
related to the Apache Web server.
