Like many others in this thread I too recommend Stroustrup's book. However I do not agree that this should be the first book you look into. What this book does is to cover the specifics of C++. I use it when I need details like how types are resolved when instancing template classes and functions, when variables are initialized and not (a rule of thumb in C++ is to always initialize variables), scoping rules, etc. But it's not as useful for how to put everything together in a larger context.
When I started with C++ I used "C++ - How to Program" (Deitel). This book covers most (but not all) aspects of the language, and the exercises are very good. Many books start out with covering C topics, then move on to C++. In my opinion this is not a good idea, because when using C++ you need to change how you think. This book will teach you C++ from the beginning.
C++ is full of pitfalls and weird details. When you want to learn using the language in a more optimal way, I recommend "Effective C++" (Scott Meyers). This book is often referred to as the "first second book you need". Every C++ programmer should have this. It covers common errors when using constructors, resource management, inheritance, templates, and many other things. All topics are very specific, and can be used in your code directly.
At this point you may want to get "Design Patterns - Elements of Reusable Object-Oriented Software" (Gamma, Helm, Johnson, Vlissides). This book is THE classic for design patterns. Whenever you see mention of "Gang of Four" or "GoF", it refers to this book. Also, unlike most other books on the topic, most examples are in C++ (and SmallTalk in a handful of cases).
The STL (Standard Template Library) includes a plethora of useful containers and algorithms. So many in fact, that it's hard to choose the right ones for the problem at hand. Again by Scott Meyers I recommend "Effective STL". It helps you choose the right tools for working on ranges of objects, including searching, sorting, deleting, etc. You'll get a better understanding of how to achieve the optimal blend of speed and error-free operation.
C++ is a big and expressive language. It's unrealistic for any one person to learn everything about it (at least in one lifetime). And while personal experience is the best teacher, the above books will speed up your progress considerably.