C++ Cookbook

C++ Cookbook

3.41 (32 ratings by Goodreads)
By (author)  , By (author)  , By (author) 

Free delivery worldwide

Available. Expected delivery to the United States in 9-14 business days.

Not ordering to the United States? Click here.


Despite its highly adaptable and flexible nature, C++ is also one of the more complex programming languages to learn. Once mastered, however, it can help you organize and process information with amazing efficiency and quickness. The C++ Cookbook will make your path to mastery much shorter. This practical, problem-solving guide is ideal if you're an engineer, programmer, or researcher writing an application for one of the legions of platforms on which C++ runs. The algorithms provided in C++ Cookbook will jump-start your development by giving you some basic building blocks that you don't have to develop on your own. Less a tutorial than a problem-solver, the book addresses many of the most common problems you're likely encounter--whether you've been programming in C++ for years or you're relatively new to the language.
Here are just some of the time-consuming tasks this book contains practical solutions for: * Reading the contents of a directory * Creating a singleton class * Date and time parsing/arithmetic * String and text manipulation * Working with files * Parsing XML * Using the standard containers Typical of O'Reilly's "Cookbook" series, C++ Cookbook is written in a straightforward format, featuring recipes that contain problem statements and code solutions, and apply not to hypothetical situations, but those that you're likely to encounter. A detailed explanation then follows each recipe in order to show you how and why the solution works. This question-solution-discussion format is a proven teaching method, as any fan of the "Cookbook" series can attest to. This book will move quickly to the top of your list of essential C++ references.
show more

Product details

  • Paperback | 594 pages
  • 178 x 233 x 30mm | 934g
  • Sebastopol, United States
  • English
  • 1, black & white illustrations
  • 0596007612
  • 9780596007614
  • 730,197

Table of contents

Preface 1. Building C++ Applications 1.1 Obtaining and Installing GCC 1.2 Building a Simple "Hello, World" Application from the Command Line 1.3 Building a Static Library from the Command Line 1.4 Building a Dynamic Library from the Command Line 1.5 Building a Complex Application from the Command Line 1.6 Installing Boost.Build 1.7 Building a Simple "Hello, World" Application Using Boost.Build 1.8 Building a Static Library Using Boost.Build 1.9 Building a Dynamic Library Using Boost.Build 1.10 Building a Complex Application Using Boost.Build 1.11 Building a Static Library with an IDE 1.12 Building a Dynamic Library with an IDE 1.13 Building a Complex Application with an IDE 1.14 Obtaining GNU make 1.15 Building A Simple "Hello, World" Application with GNU make 1.16 Building a Static Library with GNU Make 1.17 Building a Dynamic Library with GNU Make 1.18 Building a Complex Application with GNU make 1.19 Defining a Macro 1.20 Specifying a Command-Line Option from Your IDE 1.21 Producing a Debug Build 1.22 Producing a Release Build 1.23 Specifying a Runtime Library Variant 1.24 Enforcing Strict Conformance to the C++ Standard 1.25 Causing a Source File to Be Linked Automatically Against a Specified Library 1.26 Using Exported Templates 2. Code Organization 2.1 Making Sure a Header File Gets Included Only Once 2.2 Ensuring You Have Only One Instance of a Variable Across Multiple Source Files 2.3 Reducing #includes with Forward Class Declarations 2.4 Preventing Name Collisions with Namespaces 2.5 Including an Inline File 3. Numbers 3.1 Converting a String to a Numeric Type 3.2 Converting Numbers to Strings 3.3 Testing Whether a String ontains a Valid Number 3.4 Comparing Floating-Point Numbers with Bounded Accuracy 3.5 Parsing a String Containing a Number in Scientific Notation 3.6 Converting Between Numeric Types 3.7 Getting the Minimum and Maximum Values for a Numeric Type 4. Strings and Text 4.1 Padding a String 4.2 Trimming a String 4.3 Storing Strings in a Sequence 4.4 Getting the Length of a String 4.5 Reversing a String 4.6 Splitting a String 4.7 Tokenizing a String 4.8 Joining a Sequence of Strings 4.9 Finding Things in Strings 4.10 Finding the nth Instance of a Substring 4.11 Removing a Substring from a String 4.12 Converting a String to Lower- or Uppercase 4.13 Doing a Case-Insensitive String Comparison 4.14 Doing a Case-Insensitive String Search 4.15 Converting Between Tabs and Spaces in a Text File 4.16 Wrapping Lines in a Text File 4.17 Counting the Number of Characters, Words, and Lines in a Text File 4.18 Counting Instances of Each Word in a Text File 4.19 Add Margins to a Text File 4.20 Justify a Text File 4.21 Squeeze Whitespace to Single Spaces in a Text File 4.22 Autocorrect Text as a Buffer Changes 4.23 Reading a Comma-Separated Text File 4.24 Using Regular Expressions to Split a String 5. Dates and Times 5.1 Obtaining the Current Date and Time 5.2 Formatting a Date/Time as a String 5.3 Performing Date and Time Arithmetic 5.4 Converting Between Time Zones 5.5 Determining a Day's Number Within a Given Year 5.6 Defining Constrained Value Types 6. Managing Data with Containers 6.1 Using vectors Instead of Arrays 6.2 Using vectors Efficiently 6.3 Copying a vector 6.4 Storing Pointers in a vector 6.5 Storing Objects in a list 6.6 Mapping strings to Other Things 6.7 Using Hashed Containers 6.8 Storing Objects in Sorted Order 6.9 Storing Containers in Containers 7. Algorithms 7.1 Iterating Through a Container 7.2 Removing Objects from a Container 7.3 Randomly Shuffling Data 7.4 Comparing Ranges 7.5 Merging Data 7.6 Sorting a Range 7.7 Partitioning a Range 7.8 Performing Set Operations on Sequences 7.9 Transforming Elements in a Sequence 7.10 Writing Your Own Algorithm 7.11 Printing a Range to a Stream 8. Classes 8.1 Initializing Class Member Variables 8.2 Using a Function to Create Objects (a.k.a. Factory Pattern) 8.3 Using Constructors and Destructors to Manage Resources (or RAII) 8.4 Automatically Adding New Class Instances to a Container 8.5 Ensuring a Single Copy of a Member Variable 8.6 Determining an Object's Type at Runtime 8.7 Determining if One Object's Class Is a Subclass of Another 8.8 Giving Each Instance of a Class a Unique Identifier 8.9 Creating a Singleton Class 8.10 Creating an Interface with an Abstract Base Class 8.11 Writing a Class Template 8.12 Writing a Member Function Template 8.13 Overloading the Increment and Decrement Operators 8.14 Overloading Arithmetic and Assignment Operators for Intuitive Class Behavior 8.15 Calling a Superclass Virtual Function 9. Exceptions and Safety 9.1 Creating an Exception Class 9.2 Making a Constructor Exception-Safe 9.3 Making an Initializer List Exception-Safe 9.4 Making Member Functions Exception-Safe 9.5 Safely Copying an Object10. Streams and Files 10.1 Lining Up Text Output 10.2 Formatting Floating-Point Output 10.3 Writing Your Own Stream Manipulators 10.4 Making a Class Writable to a Stream 10.5 Making a Class Readable from a Stream 10.6 Getting Information About a File 10.7 Copying a File 10.8 Deleting or Renaming a File 10.9 Creating a Temporary Filename and File 10.10 Creating a Directory 10.11 Removing a Directory 10.12 Reading the Contents of a Directory 10.13 Extracting a File Extension from a String 10.14 Extracting a Filename from a Full Path 10.15 Extracting a Path from a Full Path and Filename 10.16 Replacing a File Extension 10.17 Combining Two Paths into a Single Path11. Science and Mathematics 11.1 Computing the Number of Elements in a Container 11.2 Finding the Greatest or Least Value in a Container 11.3 Computing the Sum and Mean of Elements in a Container 11.4 Filtering Values Outside a Given Range 11.5 Computing Variance, Standard Deviation, and Other Statistical Functions 11.6 Generating Random Numbers 11.7 Initializing a Container with Random Numbers 11.8 Representing a Dynamically Sized Numerical Vector 11.9 Representing a Fixed-Size Numerical Vector 11.10 Computing a Dot Product 11.11 Computing the Norm of a Vector 11.12 Computing the Distance Between Two Vectors 11.13 Implementing a Stride Iterator 11.14 Implementing a Dynamically Sized Matrix 11.15 Implementing a Constant-Sized Matrix 11.16 Multiplying Matricies 11.17 Computing the Fast Fourier Transform 11.18 Working with Polar Coordinates 11.19 Performing Arithmetic on Bitsets 11.20 Representing Large Fixed-Width Integers 11.21 Implementing Fixed-Point Numbers 12. Multithreading 12.1 Creating a Thread 12.2 Making a Resource Thread-Safe 12.3 Notifying One Thread from Another 12.4 Initializing Shared Resources Once 12.5 Passing an Argument to a Thread Function 13. Internationalization 13.1 Hardcoding a Unicode String 13.2 Writing and Reading Numbers 13.3 Writing and Reading Dates and Times 13.4 Writing and Reading Currency 13.5 Sorting Localized Strings 14. XML 14.1 Parsing a Simple XML Document 14.2 Working with Xerces Strings 14.3 Parsing a Complex XML Document 14.4 Manipulating an XML document 14.5 Validating an XML Document with a DTD 14.6 Validating an XML Document with a Schema 14.7 Transforming an XML Document with XSLT 14.8 Evaluating an XPath Expression 14.9 Using XML to Save and Restore a Collection of Objects15. Miscellaneous 15.1 Using Function Pointers for Callbacks 15.2 Using Pointers to Class Members 15.3 Ensuring That a Function Doesn't Modify an Argument 15.4 Ensuring That a Member Function Doesn't Modify Its Object 15.5 Writing an Operator That Isn't a Member Function 15.6 Initializing a Sequence with Comma-Separated Values Index
show more

About Jeff Cogswell

D. Ryan Stephens is a software engineer, writer, and student living in Tempe, Arizona. He enjoys programming in virtually any language, especially C++. His interests include the fields of information retrieval and data mining, and pretty much anything that has to do with algorithms and large data sets. When he's not working, writing, or programming, he plays with his kids, works on his house, or goes cycling Christopher Diggins is a freelance C++ programmer and consultant, and writes the Agile C++ column for the C++ Users Journal. He is also the designer of the Heron programming language, and spends far too much time in front of his computer. Christopher's homepage is www.cdiggins.com. Jonathan Turkanis is the author of the Boost Iostreams library and several other open source C++ libraries covering areas including smart pointers, runtime reflection, component architectures and aspect-oriented programming. He is a Ph.D. candidate in mathematical logic at the University of California at Berkeley. Jeff Cogswell is co-author of the forthcoming C++ Cookbook from O'Reilly. He has been programming in several languages for many years, and PHP is one of his areas of expertise. His background was previously in telecom, writing software for such strange things as network management protocols. Lately, however, his work has focused more on web development. Jeff lives in Michigan after spending a few years in both Florida and California, and is holding out for some warmer weather.
show more

Rating details

32 ratings
3.41 out of 5 stars
5 12% (4)
4 31% (10)
3 44% (14)
2 9% (3)
1 3% (1)
Book ratings by Goodreads
Goodreads is the world's largest site for readers with over 50 million reviews. We're featuring millions of their reader ratings on our book pages to help you find your new favourite book. Close X