But I actually think we (software devs) need to focus more on mastering languages as opposed to learning many languages at a surface level.
Books like "Effective C++" (https://www.amazon.ca/Effective-Specific-Improve-Programs-De...) really showed me the huge divide between knowing a language and mastering a language.
http://msdn.microsoft.com/en-us/library/hh279654.aspx
If you primarily use value and reference semantics, RAII, smart pointers, STL containers and algorithms, etc, C++ looks a lot like a really powerful high-level language, because that's what it is. Things only start to get ugly and/or low-level when you are trying to heavily optimize things.
Stroustrop (mentioned in other comments) is a great way to get started, and Effective C++ (http://www.amazon.com/Effective-Specific-Improve-Programs-De...) and its cousins will help you not shoot yourself in the foot.
C is a whole different beast. If you've coded in Java, you have a basic idea of how to do encapsulation in C++. Encapsulation in C is nearly impossible to guarantee. Really, a lot of C programming relies heavily on negotiated conventions and design by contract. Learning the C language is pretty easy (read K&R some weekend), but learning to program well in C is a completely different thing.
- Effective C++: http://www.amazon.com/Effective-Specific-Improve-Programs-De...
1. Programming pearls, http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/...
2. Effective C++, http://www.amazon.com/Effective-Specific-Improve-Programs-De...
3. Programming Problems, http://www.amazon.com/Programming-Problems-Primer-Technical-...
The reason for these texts is not because they are overtly insightful or well written, it is because they have a large number of problems with completely coded solutions. After working through these basics, programming interviews are much more enjoyable.
[1] http://www.amazon.com/Effective-Specific-Improve-Programs-De... (Make sure you get the latest edition, a lot has changed for the better)
http://www.amazon.com/Effective-Specific-Improve-Programs-De...
I took a class under Bjarne Stroustrup and he highly recommended Tour of C++ [0] as the best way to learn modern C++ for someone who already has some programming experience. That and of course, Effective C++[1] by Scott Meyers.
[0] - https://www.amazon.com/Tour-C-Depth/dp/0321958314
[1] - https://www.amazon.com/Effective-Specific-Improve-Programs-D...