Во-первых, from_stream
работает с потоками, а не со строками. Если вы хотите использовать строку, вы должны сначала пройти через поток:
std::istringstream iss("2018-12-09T00:00:00");
Теперь ожидаемая функция на самом деле анализ , а не from_stream
. Он работает как другие манипуляторы, такие как get_time
, и делегирует свою работу from_stream
:
std::chrono::year_month_day date;
if (not (iss >> std::chrono::parse("%FT%T", date))) {
// Handle error
}
Это эквивалентно from_stream(iss, "%FT%T", date)
.
Вы можете увидеть некоторое использование синтаксического анализа в Говард CppCon Говарда о часовых поясах . Далее он показывает примеры, которые используют дополнительные параметры, чтобы определить, какие аббревиатура и смещение часового пояса были фактически проанализированы, но это не относится к варианту использования в вашем вопросе. (Говард является автором библиотеки, на которой это основано, а также человеком, который настаивал на ее стандартизации.)