書式付き時刻の入出力

C++で書式付き時刻の入出力を扱うクラスを書いていたときのこと.クラスと言っても肝心の書式付き文字列の解析・書き出しは,それぞれstrptime(),strftime()に頼っているので,何をしているという訳でもないのですが.

gccコンパイルしていると,ctimeをインクルードしていてもstd::strptime()とするとエラーが出るんですよね.strptime()は存在しているようですが,何故かstd空間には定義されていないようで.std::strftime()はきちんと存在するのですが.それで何故かなと思ってmanを眺めていると,strptimeの準拠はSUSv2, POSIX.1-2001となっていて,もしかして標準関数ではない?そう言えば,持っているリファレンスにもstrftime()は載っているけどstrptime()は載ってないな.

書式付き時刻の入出力に関しては,std::time_get,std::time_putクラスを使うという手もありますが,std::time_putはstrftime()と同じことができるのに対して,std::time_getはstrptime()とは少し異なる形になっているのが悩ましいところです.strptime()に当たるものだけ自作するという手もあるのですが,月とか曜日の名前はどう扱ったら良いのかとか結構分からない部分もあるので,しばらくはstrptime()で逃げようかな.

localeとfacet辺りは良く分かってないので,そのうち見てみようかな.