最終更新日時(UTC):
が更新

履歴 編集

function
<chrono>

std::chrono::from_stream(C++20)

namespace std::chrono {
  template <class charT, class traits, class Alloc = std::allocator<charT>>
  std::basic_istream<charT, traits>&
    from_stream(std::basic_istream<charT, traits>& is,
                const charT* fmt,
                year_month_day& ymd,
                basic_string<charT, traits, Alloc>* abbrev = nullptr,
                minutes* offset = nullptr);   // (1) C++20
}

概要

フォーマット指定して入力ストリームからyear_month_dayオブジェクトに入力する。

効果

  • パラメータfmtで指定されたフォーマットフラグを使用して、入力を解析し、ymdに代入する
  • 有効な年の解析に失敗した場合、is.setstate(ios_base::failbit)が呼び出され、パラメータymdは変更されない
  • タイムゾーンフォーマット"%Z"が指定され、解析が成功した場合、パラメータabbrevが非ヌルである場合に*abbrevにタイムゾーン名が代入される
  • タイムゾーンとしてUTC時間からのオフセット時間 (日本なら"+0900") を意味するフォーマット"%z"が指定され、解析が成功した場合、パラメータoffsetが非ヌルである場合に*offsetにその値が代入される

戻り値

isを返す

備考

  • この解析においては、year_month_dayのフォーマットは、デフォルトで"%F"が使用される。これは"%Y-%m-%d"と等価であり、ハイフン区切りで年、月、日を整数値として解析する

#include <cassert>
#include <sstream>
#include <chrono>

namespace chrono = std::chrono;
using namespace std::chrono_literals;

int main()
{
  {
    std::stringstream ss;
    ss << "2020-03-01";

    chrono::year_month_day ymd;
    chrono::from_stream(ss, ymd, "%F");
    assert(ymd == 2020y/3/1);
  }
  {
    std::stringstream ss;
    ss << "2020-03-01";

    chrono::year_month_day ymd;
    chrono::from_stream(ss, ymd, "%04F"); // 年の桁数を指定する
    assert(ymd == 2020y/3/1);
  }
}

出力

バージョン

言語

  • C++20

処理系

  • Clang: (9.0時点で実装なし)
  • GCC: (9.2時点で実装なし)
  • Visual C++: (2019 Update 3時点で実装なし)

関連項目

  • local_time_format() (フォーマットの詳細)