- chrono[meta header]
- std::chrono[meta namespace]
- function[meta id-type]
- cpp20[meta cpp]
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を返す
#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, "%4F"); // 年の桁数を指定する
assert(ymd == 2020y/3/1);
}
}- chrono::from_stream[color ff0000]
- 2020y[link /reference/chrono/year/op_y.md]
- C++20
- Clang: (9.0時点で実装なし)
- GCC: (9.2時点で実装なし)
- Visual C++: (2019 Update 3時点で実装なし)
- chronoの
parse()(入力フォーマットの詳細)