最終更新日時: 2025年09月26日 12時52分26秒 (JST)
Raclamusi が更新

履歴 編集

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,
                    day& d,
                    basic_string<charT, traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);   // (1) C++20
    }

## 概要

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

## 効果

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

## 戻り値

`is`を返す

## 例

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

    namespace chrono = std::chrono;

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

        chrono::day d;
        chrono::from_stream(ss, "%d", d);
        assert(d == chrono::day{1});
      }
      {
        std::stringstream ss;
        ss << "1";

        chrono::day d;
        chrono::from_stream(ss, "%2d", d);
        assert(d == chrono::day{1});
      }
    }

### 出力

## バージョン

### 言語

- C++20

### 処理系

- Clang: 9.0 ❌
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌

## 関連項目

- chronoの`parse()` (入力フォーマットの詳細)