The number of books published on C++ and related topics far exceeds the number that any rational person could hope to read. The following list of books are those that I have read. Many other excellent books exist, but I have not yet found the time to read them all. For a more comprehensive list of C++ books, visit ACCU (Association of C and C++ Users). For your convenience, I divided the books into four sections: for novice programmers, for experienced programmers who want to learn C++, for experienced C++ programmers, and books for all programmers.
C++ in a Nutshell, by Ray Lischner.
I wrote C++ in a Nutshell because I could not find a good reference for the language and library.
C++ Network Programming, volume 2, by Douglas C. Schmidt and Stephen D. Huston.
One of two volumes on ACE (the ADAPTIVE Communication Environment).
The C++ Programming Language, special edition, by Bjarne Stroustrup.
A classic, by the inventor of C++.
The C++ Standard Library, by Nicolai M. Josuttis.
A thorough and in-depth reference for the standard library (all the C++-specific portions of the library).
The C++ Standard Template Library, by P. J. Plauger, et al.
A good reference for the STL portion of the library, aimed at those who wish to understand the library from the implementor's perspective.
C++ Templates, by David Vandervoorde and Nicolai M. Josuttis.
Excellent, in-depth, and thorough coverage of this difficult topic.
Effective C++, by Scott Meyers.
Now largely out of date, this original book still continues much that is useful.
More Effective C++, by Scott Meyers.
Tips on using C++ correctly and efficiently.
Effective STL, by Scott Meyers.
Tips on using the STL correctly and efficiently.
Exceptional C++, by Herb Sutter.
A series of challenges to the most experienced programmer, providing greater understanding of the subtleties of the language.
More Exceptional C++, by Herb Sutter.
More challenges to the most experienced programmer, providing greater understanding of the subtleties of the language.
Modern C++ Design, by Andrei Alexandrescu.
An immersion into the wild world of template metaprogramming.
STL Tutorial and Reference, 2nd edition, by David R. Musser, et al.
A more gentle introduction to the STL than some of the other books.
Accelerated C++, by Andrew Koenig and Barbara E. Moo.
An excellent book for experienced programmers who want to learn C++. It is more advanced than the typical "Teach Yourself" style books.
Essential C++, by Stanley B. Lippman.
A slightly different approach to presenting C++ to experienced programmers.
C++ for Java Programmers, by Timoth Budd.
A small book that is aimed at students who have spent most of their undergraduate years using Java and must now learn C++. It covers the basics well, but does not go into the intricate depths of templates.
C++ Primer, By Stanley B. Lippman and Josée Lajoie.
A good introduction to C++ for novice programmers. My preference as a textbook for those learning C++.
Thinking in C++, 2nd edition, by Bruce Eckel
Another good introduction to C++. Many of my students preferred this book to C++ Primer.
The Design and Evolution of C++, by Bjarne Stroustrup.
Insight into why C++ is the way it is.