0

タイムスタンプを特定の形式でファイルに書き込みたい。

修飾子を使用して新しい文字列を作成する方法はありますか(以下のprintfコードを参照)?または、TextStreamで文字列修飾子を使用する別の方法はありますか?

printf("%02d-%02d-%02d_%02d:%02d:%02d.%02d\n", 
       st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
4

2 に答える 2

5

バッファサイズを気にせずにタイプセーフな代替手段は、出力ストリームで直接または次のいずれかでIOマニピュレータstd::ostringstreamを使用することです。

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>

int main()
{
    std::ostringstream s;
    s << std::setfill('0')
      << std::setw(2) << 1 << ':' // st.wYear, etc
      << std::setw(2) << 97 << ':'
      << std::setw(2) << 4;

    std::cout << s.str() << "\n";

    return 0;
}

intさらに、std::string:を取得するためのアプローチを示す以前の回答は、std::stringにintを追加します

于 2012-08-06T20:19:08.633 に答える
1

sprintfの代わりにを使用すると、必要な文字列が出力されるのではなくprintf、バッファに書き込まれます。char

sprintf(buffer, "%02d-%02d-%02d_%02d:%02d:%02d.%02d\n", 
        st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);

BoostFormatライブラリを使用することもできます。

于 2012-08-06T20:14:56.467 に答える