C++11以降にあるstring型。すごく便利なのでよく使うのですが、printf出力では使えないと思ってました。ちょっと手を加えて、 string型を c_str() でcの文字列型に変換すればできる。これがわかったときには思わず感動しました。
#include <string>
#include <cstdio>
int main()
{
std::string str = "Hello world!";
std::printf("%s\n",str.c_str());
return 0;
}