C++ string型をprintfで出力

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;
}