タイムスタンプを特定の形式でファイルに書き込みたい。
修飾子を使用して新しい文字列を作成する方法はありますか(以下の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);
タイムスタンプを特定の形式でファイルに書き込みたい。
修飾子を使用して新しい文字列を作成する方法はありますか(以下の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);
バッファサイズを気にせずにタイプセーフな代替手段は、出力ストリームで直接または次のいずれかで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を追加します
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ライブラリを使用することもできます。