Description
Less a tutorial than a problem-solver, this practical guide shows you how to solve many of the real-world problems that C++ developers encounter, including how to parse a date and time string and how to create a singleton class. It's a trusted source of information for engineers, programmers, and researchers alike. Presented in O'Reilly's classic question-solution-discussion format.
Full Description
Table of Contents
-
Chapter 1 Building C++ Applications
-
Introduction to Building
-
Obtaining and Installing GCC
-
Building a Simple "Hello, World" Application from the Command Line
-
Building a Static Library from the Command Line
-
Building a Dynamic Library from the Command Line
-
Building a Complex Application from the Command Line
-
Installing Boost.Build
-
Building a Simple "Hello, World" Application Using Boost.Build
-
Building a Static Library Using Boost.Build
-
Building a Dynamic Library Using Boost.Build
-
Building a Complex application Using Boost.Build
-
Building a Static Library with an IDE
-
Building a Dynamic Library with an IDE
-
Building a Complex Application with an IDE
-
Obtaining GNU make
-
Building A Simple "Hello, World" Application with GNU make
-
Building a Static Library with GNU Make
-
Building a Dynamic Library with GNU Make
-
Building a Complex Application with GNU make
-
Defining a Macro
-
Specifying a Command-Line Option from Your IDE
-
Producing a Debug Build
-
Producing a Release Build
-
Specifying a Runtime Library Variant
-
Enforcing Strict Conformance to the C++ Standard
-
Causing a Source File to Be Linked Automatically Against a Specified Library
-
Using Exported Templates
-
-
Chapter 2 Code Organization
-
Introduction
-
Making Sure a Header File Gets Included Only Once
-
Ensuring You Have Only One Instance of a Variable Across Multiple Source Files
-
Reducing #includes with Forward Class Declarations
-
Preventing Name Collisions with Namespaces
-
Including an Inline File
-
-
Chapter 3 Numbers
-
Introduction
-
Converting a String to a Numeric Type
-
Converting Numbers to Strings
-
Testing Whether a String Contains a Valid Number
-
Comparing Floating-Point Numbers with Bounded Accuracy
-
Parsing a String Containing a Number in Scientific Notation
-
Converting Between Numeric Types
-
Getting the Minimum and Maximum Values for a Numeric Type
-
-
Chapter 4 Strings and Text
-
Introduction
-
Padding a String
-
Trimming a String
-
Storing Strings in a Sequence
-
Getting the Length of a String
-
Reversing a String
-
Splitting a String
-
Tokenizing a String
-
Joining a Sequence of Strings
-
Finding Things in Strings
-
Finding the nth Instance of a Substring
-
Removing a Substring from a String
-
Converting a String to Lower- or Uppercase
-
Doing a Case-Insensitive String Comparison
-
Doing a Case-Insensitive String Search
-
Converting Between Tabs and Spaces in a Text File
-
Wrapping Lines in a Text File
-
Counting the Number of Characters, Words, and Lines in a Text File
-
Counting Instances of Each Word in a Text File
-
Add Margins to a Text File
-
Justify a Text File
-
Squeeze Whitespace to Single Spaces in a Text File
-
Autocorrect Text as a Buffer Changes
-
Reading a Comma-Separated Text File
-
Using Regular Expressions to Split a String
-
-
Chapter 5 Dates and Times
-
Introduction
-
Obtaining the Current Date and Time
-
Formatting a Date/Time as a String
-
Performing Date and Time Arithmetic
-
Converting Between Time Zones
-
Determining a Day's Number Within a Given Year
-
Defining Constrained Value Types
-
-
Chapter 6 Managing Data with Containers
-
Introduction
-
Using vectors Instead of Arrays
-
Using vectors Efficiently
-
Copying a vector
-
Storing Pointers in a vector
-
Storing Objects in a list
-
Mapping strings to Other Things
-
Using Hashed Containers
-
Storing Objects in Sorted Order
-
Storing Containers in Containers
-
-
Chapter 7 Algorithms
-
Introduction
-
Iterating Through a Container
-
Removing Objects from a Container
-
Randomly Shuffling Data
-
Comparing Ranges
-
Merging Data
-
Sorting a Range
-
Partitioning a Range
-
Performing Set Operations on Sequences
-
Transforming Elements in a Sequence
-
Writing Your Own Algorithm
-
Printing a Range to a Stream
-
-
Chapter 8 Classes
-
Introduction
-
Initializing Class Member Variables
-
Using a Function to Create Objects (a.k.a. Factory Pattern)
-
Using Constructors and Destructors to Manage Resources (or RAII)
-
Automatically Adding New Class Instances to a Container
-
Ensuring a Single Copy of a Member Variable
-
Determining an Object's Type at Runtime
-
Determining if One Object's Class Is a Subclass of Another
-
Giving Each Instance of a Class a Unique Identifier
-
Creating a Singleton Class
-
Creating an Interface with an Abstract Base Class
-
Writing a Class Template
-
Writing a Member Function Template
-
Overloading the Increment and Decrement Operators
-
Overloading Arithmetic and Assignment Operators for Intuitive Class Behavior
-
Calling a Superclass Virtual Function
-
-
Chapter 9 Exceptions and Safety
-
Introduction
-
Creating an Exception Class
-
Making a Constructor Exception-Safe
-
Making an Initializer List Exception-Safe
-
Making Member Functions Exception-Safe
-
Safely Copying an Object
-
-
Chapter 10 Streams and Files
-
Introduction
-
Lining Up Text Output
-
Formatting Floating-Point Output
-
Writing Your Own Stream Manipulators
-
Making a Class Writable to a Stream
-
Making a Class Readable from a Stream
-
Getting Information About a File
-
Copying a File
-
Deleting or Renaming a File
-
Creating a Temporary Filename and File
-
Creating a Directory
-
Removing a Directory
-
Reading the Contents of a Directory
-
Extracting a File Extension from a String
-
Extracting a Filename from a Full Path
-
Extracting a Path from a Full Path and Filename
-
Replacing a File Extension
-
Combining Two Paths into a Single Path
-
-
Chapter 11 Science and Mathematics
-
Introduction
-
Computing the Number of Elements in a Container
-
Finding the Greatest or Least Value in a Container
-
Computing the Sum and Mean of Elements in a Container
-
Filtering Values Outside a Given Range
-
Computing Variance, Standard Deviation, and Other Statistical Functions
-
Generating Random Numbers
-
Initializing a Container with Random Numbers
-
Representing a Dynamically Sized Numerical Vector
-
Representing a Fixed-Size Numerical Vector
-
Computing a Dot Product
-
Computing the Norm of a Vector
-
Computing the Distance Between Two Vectors
-
Implementing a Stride Iterator
-
Implementing a Dynamically Sized Matrix
-
Implementing a Constant-Sized Matrix
-
Multiplying Matricies
-
Computing the Fast Fourier Transform
-
Working with Polar Coordinates
-
Performing Arithmetic on Bitsets
-
Representing Large Fixed-Width Integers
-
Implementing Fixed-Point Numbers
-
-
Chapter 12 Multithreading
-
Introduction
-
Creating a Thread
-
Making a Resource Thread-Safe
-
Notifying One Thread from Another
-
Initializing Shared Resources Once
-
Passing an Argument to a Thread Function
-
-
Chapter 13 Internationalization
-
Introduction
-
Hardcoding a Unicode String
-
Writing and Reading Numbers
-
Writing and Reading Dates and Times
-
Writing and Reading Currency
-
Sorting Localized Strings
-
-
Chapter 14 XML
-
Introduction
-
Parsing a Simple XML Document
-
Working with Xerces Strings
-
Parsing a Complex XML Document
-
Manipulating an XML Document
-
Validating an XML Document with a DTD
-
Validating an XML Document with a Schema
-
Transforming an XML Document with XSLT
-
Evaluating an XPath Expression
-
Using XML to Save and Restore a Collection of Objects
-
-
Chapter 15 Miscellaneous
-
Introduction
-
Using Function Pointers for Callbacks
-
Using Pointers to Class Members
-
Ensuring That a Function Doesn't Modify an Argument
-
Ensuring That a Member Function Doesn't Modify Its Object
-
Writing an Operator That Isn't a Member Function
-
Initializing a Sequence with Comma-Separated Values
-
-
Colophon
Product Details
- Title:
- C++ Cookbook
- By:
- D. Ryan Stephens, Christopher Diggins, Jonathan Turkanis, Jeff Cogswell
- Publisher:
- O'Reilly Media
- Formats:
-
- Ebook
- Safari Books Online
- Print Release:
- November 2005
- Ebook Release:
- June 2009
- Pages:
- 600
- Print ISBN:
- 978-0-596-00761-4
- | ISBN 10:
- 0-596-00761-2
- Ebook ISBN:
- 978-0-596-15950-4
- | ISBN 10:
- 0-596-15950-1
Customer Reviews
