0

Boost 日時ライブラリに、月の短い文字列 (Jan、Feb、Mar、Apr など) を boost::gregorian::greg_month 型に変換するためのユーティリティ関数はありますか? ライブラリのドキュメントは良くなく、ヘッダーに何も表示されません。

4

2 に答える 2

1

ハッキーな回避策は次のとおりです。

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>

int main(void)
{
  auto ptr = boost::gregorian::greg_month::get_month_map_ptr();

  if (ptr)
  {
    auto it = ptr->begin();
    for(; it != ptr->end(); ++it)
    {
      std::cout << it->first << " " << it->second << '\n';
    }
  }
}

greg_monthこのマップには、インスタンスの作成に必要なすべての短い/長い名前と短い名前の間のマッピングが含まれています。その周りに小さなラッパーを作成するだけです...

Graeme の発見によると、既にこれをラップする便利な関数があります。boost::date_time::month_str_to_ushort<>

于 2012-02-24T14:08:13.320 に答える
0

はい、ロケールを作成してストリームに入れるために使用できるブースト日時ファセットがあります。

ただし、多数の日付と時刻を出力または解析する場合は、解析するそれぞれのファセットとロケールを作成しないことに注意してください。

日付の入力に関するドキュメントについては、こちらを参照してください。彼らの例のいくつかは、フォーマット指定子%bとして持っているように見える短い月名を使用しています

于 2012-02-24T14:00:02.233 に答える