質問: mfc/c++ sprintf の代わりに << 昔vc6でmfc/c++を少しかじったことのある者です。 この度visual studio 2010でmfc/c++をやってみようということになりました。 昔作った古いコーディングを参考に、よりc++らしい書き方に改めようとしています。 現在時刻を名前にしたファイルを作成する際、 ファイル名をこれまでは sprintf() を使って、 char szfilename[11]; sprintf(szfilename, "%02d%02d%02d.txt", hour, min, sec); (*)hour, min, sec のそれぞれに、時, 分, 秒の値が格納されているとする。 ように作っていたのですが、これを iostream な書き方に改めています。 このとき、 xxx << setfill('0') << setw(2) << hour << setw(2) << min << setw(2) << sec << ".txt" のようにするだろうことは分かったのですが、 恥ずかしながら、この xxx の定義の仕方(変数の型)が分かりません。 ウェブでいろいろ調べてみたのですが、 サンプルコードのほとんどが cout に出力していて、 変数に格納する方法が分かりませんでした。 初歩的な質問ですみませんが、よろしくお願いします。
回答: 既に回答がありますが、c++ の標準ライブラリとしては、sstream があります。 #include として、 std::sstream mystream; で、 mystream << (以下同様) です。 ただ、mystream は、std::sstream 型なので、char * とは互換性がありません。 mystream.str() で、std::string 型になり、 mystream.str().c_str() でchar* として参照できます。 (ただし、読むだけにした方が良いです)