C++20: Krono G/Ç: Biçimlendirilmemiş ve biçimlendirilmiş

Adanali

Active member
C++20: Krono G/Ç: Biçimlendirilmemiş ve biçimlendirilmiş


  1. C++20: Krono G/Ç: Biçimlendirilmemiş ve biçimlendirilmiş







Bu makale, C++20'deki Chrono uzantısıyla ilgili ayrıntılı yolculuğumun onuncusu:


Duyuru








Rainer Grimm uzun yıllardır yazılım mimarı, ekip ve eğitim yöneticisi olarak çalışmaktadır. C++, Python ve Haskell programlama dilleri üzerine makaleler yazmaktan hoşlanıyor, aynı zamanda özel konferanslarda sık sık konuşmaktan da hoşlanıyor. Modern C++ adlı blogunda C++ tutkusunu yoğun bir şekilde ele alıyor.







Ham takvim verileri


Zaman süreleri, zaman noktaları ve takvim tarihleri gibi çoğu Chrono veri türü, formatı belirtmeden doğrudan yazmayı destekler. Bugün bu kaba takvim tarihlerine devam ediyorum. Aşağıdaki tabloda takvim verilerinin standart çıktı biçimi gösterilmektedir.








// createCalendar.cpp

#include <chrono>&#13;
#include <iostream>&#13;
&#13;
int main() {&#13;
&#13;
std::cout << 'n';&#13;
&#13;
using namespace std::chrono_literals; &#13;
&#13;
using std::chrono::last;&#13;
&#13;
using std::chrono::year;&#13;
using std::chrono::month;&#13;
using std::chrono::day;&#13;
&#13;
using std::chrono::year_month;&#13;
using std::chrono::year_month_day;&#13;
using std::chrono::year_month_day_last;&#13;
using std::chrono::year_month_weekday;&#13;
using std::chrono::year_month_weekday_last;&#13;
using std::chrono::month_weekday;&#13;
using std::chrono::month_weekday_last;&#13;
using std::chrono::month_day;&#13;
using std::chrono::month_day_last;&#13;
using std::chrono::weekday_last;&#13;
using std::chrono::weekday;&#13;
&#13;
using std::chrono::January;&#13;
using std::chrono::February;&#13;
using std::chrono::June;&#13;
using std::chrono::March;&#13;
using std::chrono::October;&#13;
&#13;
using std::chrono::Monday;&#13;
using std::chrono::Thursday;&#13;
using std::chrono::Sunday;&#13;
&#13;
constexpr auto yearMonthDay{year(1940)/month(6)/day(26)}; // (1)&#13;
std::cout << yearMonthDay << " ";&#13;
std::cout << year_month_day(1940y, June, 26d) << 'n'; // (2)&#13;
&#13;
std::cout << 'n';&#13;
&#13;
constexpr auto yearMonthDayLast{year(2010)/March/last}; // (3)&#13;
std::cout << yearMonthDayLast << " ";&#13;
std::cout << year_month_day_last(2010y, month_day_last(month(3))) << 'n';&#13;
&#13;
constexpr auto&#13;
yearMonthWeekday{year(2020)/March/Thursday[2]}; // (4)&#13;
std::cout << yearMonthWeekday << " ";&#13;
std::cout << year_month_weekday(2020y, month(March), Thursday[2]) << 'n';&#13;
&#13;
constexpr auto &#13;
yearMonthWeekdayLast{year(2010)/March/Monday[last]}; //(5)&#13;
std::cout << yearMonthWeekdayLast << " ";&#13;
std::cout << year_month_weekday_last(2010y, month(March), weekday_last(Monday));&#13;
&#13;
std::cout << "nn";&#13;
&#13;
constexpr auto day_{day(19)}; // (6) &#13;
std::cout << day_ << " ";&#13;
std::cout << day(19) << 'n';&#13;
&#13;
constexpr auto month_{month(1)}; // (7) &#13;
std::cout << month_ << " ";&#13;
std::cout << month(1) << 'n';&#13;
&#13;
constexpr auto year_{year(1988)}; // (8) &#13;
std::cout << year_ << " ";&#13;
std::cout << year(1988) << 'n';&#13;
&#13;
constexpr auto weekday_{weekday(5)};&#13;
std::cout << weekday_ << " ";&#13;
std::cout << weekday(5) << 'n';&#13;
&#13;
constexpr auto yearMonth{year(1988)/1};&#13;
std::cout << yearMonth << " ";&#13;
std::cout << year_month(year(1988), January) << 'n';&#13;
&#13;
constexpr auto monthDay{10/day(22)};&#13;
std::cout << monthDay << " ";&#13;
std::cout << month_day(October, day(22)) << 'n';&#13;
&#13;
constexpr auto monthDayLast{June/last};&#13;
std::cout << monthDayLast << " ";&#13;
std::cout << month_day_last(month(6)) << 'n';&#13;
&#13;
constexpr auto monthWeekday{2/Monday[3]};&#13;
std::cout << monthWeekday << " ";&#13;
std::cout << month_weekday(February, Monday[3]) << 'n';&#13;
&#13;
constexpr auto monthWeekDayLast{June/Sunday[last]};&#13;
std::cout << monthWeekDayLast << " ";&#13;
std::cout << month_weekday_last(June, weekday_last(Sunday)) << 'n';&#13;
&#13;
std::cout << 'n';&#13;
&#13;
}


İşte programın çıktısı:








Biçimlendirilmiş çıktılar


Aşağıdaki tabloda, kısa bir açıklama ve bir örnek de dahil olmak üzere formatın özellikleri gösterilmektedir. Açıklamanın tamamı cppreference.com/chrono/parse adresinde mevcuttur.




















Aşağıdaki program takvim saati ve tarih belirticilerini kullanır.


// formattedOutputChrono.cpp&#13;
&#13;
#include <chrono>&#13;
#include <iostream>&#13;
#include <thread>&#13;
&#13;
int main() {&#13;
&#13;
std::cout << 'n';&#13;
&#13;
using namespace std::literals;&#13;
&#13;
auto start = std::chrono::steady_clock::now(); // (1)&#13;
std::this_thread::sleep_for(33ms);&#13;
auto end = std::chrono::steady_clock::now(); // (2)&#13;
std::cout << std::format("The job took {} secondsn", end - start);&#13;
std::cout << std::format("The job took {:%S} secondsn", end - start);&#13;
&#13;
std::cout << 'n';&#13;
&#13;
auto now = std::chrono::system_clock::now(); // (3) &#13;
std::cout << "now: " << now << 'n';&#13;
std::cout << "Specifier {:%c}: " << std::format("{:%c}n", now);&#13;
std::cout << "Specifier {:%x}: " << std::format("{:%x}n", now);&#13;
std::cout << "Specifier {:%F}: " << std::format("{:%F}n", now);&#13;
std::cout << "Specifier {:%D}: " << std::format("{:%D}n", now);&#13;
std::cout << "Specifier {:%Y}: " << std::format("{:%Y}n", now);&#13;
std::cout << "Specifier {:%y}: " << std::format("{:%y}n", now);&#13;
std::cout << "Specifier {:%b}: " << std::format("{:%b}n", now);&#13;
std::cout << "Specifier {:%B}: " << std::format("{:%B}n", now);&#13;
std::cout << "Specifier {:%m}: " << std::format("{:%m}n", now);&#13;
std::cout << "Specifier {:%W}: " << std::format("{:%W}n", now);&#13;
std::cout << "Specifier {:%U}: " << std::format("{:%U}n", now);&#13;
std::cout << "Specifier {:%a}: " << std::format("{:%a}n", now);&#13;
std::cout << "Specifier {:%A}: " << std::format("{:%A}n", now);&#13;
std::cout << "Specifier {:%w}: " << std::format("{:%w}n", now);&#13;
std::cout << "Specifier {:%u}: " << std::format("{:%u}n", now);&#13;
std::cout << "Specifier {:%e}: " << std::format("{:%e}n", now);&#13;
std::cout << "Specifier {:%d}: " << std::format("{:%d}n", now);&#13;
&#13;
std::cout << 'n';&#13;
&#13;
}&#13;









Arama std::chrono::steady_clock::now() (1 ve 2) geçerli saati belirler. Malısın std::chrono::steady_clock Bu saat monoton olduğundan ve ayarlanamadığından ölçümler için kullanın; std::chrono::system_clock (3).

Sıradaki ne?


Bir sonraki bölüm, biçimlendirilmiş girişin biçim belirticisi hakkındadır.

Eğitim: Modern C++ ile entegre programlama



(kendim)



Haberin Sonu
 
Üst