Many STL headers in Visual C++ (including iostream header) pull in a definition of the std::basic_string class (because they indirectly include the implementation-defined <xstring> header (never include that directly)). While that allows you to use the string class, the relevant operator<< is defined in the <string> header itself, so you must include that manually.
My worst initial fears in c++ dev are A) IDEs like visual studio, B)external libraries  and integration of A and B.
http://www.boost.org/doc/libs/1_52_0/more/getting_started/windows.html presents comprehensive tutorials showing
– How to add boost header files into include path
– How to add boost precompiled binary files into the link path
I feel in most projects, the compiler only need these 2 “locations” in order to use an External library.
Just a side note, compiler/linker needs to reference 2 types of external library content
– source code – by preprocessor copy-paste
– compiled code – by linker
 external meaning not built into the IDE, like boost library