std::cout fa parte della libreria standard del c++, mentre printf fa parte della libreria standard del c.
In un programma in c std::cout ovviamente non funziona, mentre in un programma c++ è di solito possibile utilizzare printf (possibile ma assolutamente non consigliabile), semplicemente perchè i compilatori c++ hanno la possibilità di linkare alle librerie del c...