Как получить номер дня недели из std::chrono::year_month_day в C

#c #c 20 #chrono #weekday

Вопрос:

В C 20 следующий код выведет число (0-6) для дня недели, указанного на вводимой дате:

 #include <chrono>
#include <iostream>

int
main()
{
    using namespace std;
    using namespace std::chrono;
    year_month_day dmy;
    cin >> parse("%d %m %Y", dmy);
    cout << format("%w", weekday{dmy}) << 'n';
}
 

Как я могу получить, чтобы это число использовалось в коде в качестве числового значения, чтобы я мог использовать его в вычислениях? Это должно быть просто, но я не могу этого понять.

 int total_score = weekday{dmy} * 10;
 

В качестве примечания я действительно использую дату (http://howardhinnant.github.io/date/date.html) библиотека, созданная Говардом Хиннантом на C 17, но я считаю, что один и тот же вопрос применим к обоим.

Комментарии:

1. en.cppreference.com/w/cpp/chrono/weekday/encoding

2. @appleapple, Это похоже на ответ для меня 🙂

3. @appleapple Это именно то, что я искал. Я знал, что это будет просто. Если вы дадите это в качестве ответа и включите соответствующий вызов функции в фрагмент кода, я отмечу его как ответ.

Ответ №1:

Вы можете использовать std::chrono::weekday::c_encoding для извлечения сохраненного значения.