std::cout is the C++ version, and I'd suggest using std::cout because among other reasons, you can overload the << operator to better support new types.
I won't deny that those classes are perhaps overly complex. However, his rant about type-safety is unfounded, in my opinion, especially if you're just beginning programming with types.
I thought printf was an amazing function and it has a lot to do with the shell... but truth be told cout totally trumps printf simply because printf is just more complicated to use. cout was designed better.