Próbuję zastąpić kod boost :: gregorian przy użyciu c ++ 20 std :: chrono, mając nadzieję na usunięcie zależności od kompilacji boost. Kod odczytuje i zapisuje do json (używając nlohmann), więc możliwość konwersji dat na iz std :: string jest krytyczna.
Używanie g ++ 9.3.0 na Ubuntu 20.04. 2 błędy kompilacji, jeden na std :: chrono :: parse (), a drugi na std :: put_time ()
W przypadku błędu A w std :: chrono :: parse () widzę tutaj, że obsługa kalendarza (P0355R7), która obejmuje chrono :: parse, nie jest jeszcze dostępna w gcc libstdc ++. Czy ktoś wie, czy to jest poprawne, czy ma link do ETA? czy jest coś nie tak w sposobie wywoływania parse ()?
Dla błędu B dla std :: put_time (): ponieważ std: put_time () jest udokumentowane jako c ++ 11, czuję, że brakuje mi tutaj czegoś głupiego. Również dziwne jest ukrywanie się za pomocą time_t i tm c. Czy istnieje lepszy sposób na przekonwertowanie std :: chrono :: time_point bezpośrednio na std :: string bez uciekania się do c?
#include <chrono>
#include <string>
#include <sstream>
#include <iostream>
int main(int argc, char *argv[]) {
std::chrono::system_clock::time_point myDate;
//Create time point from string
//Ref: https://en.cppreference.com/w/cpp/chrono/parse
std::stringstream ss;
ss << "2020-05-24";
ss >> std::chrono::parse("%Y-%m-%e", myDate); //error A: ‘parse’ is not a member of ‘std::chrono’
//Write time point to string
//https://en.cppreference.com/w/cpp/io/manip/put_time
//http://cgi.cse.unsw.edu.au/~cs6771/cppreference/en/cpp/chrono/time_point.html
std::string dateString;
std::time_t dateTime = std::chrono::system_clock::to_time_t(myDate);
std::tm tm = *std::localtime(&dateTime);
dateString = std::put_time(&tm, "%Y-%m-%e"); //error B: ‘put_time’ is not a member of ‘std’
//Write out
std::cout << "date: " << dateString << "\n";
return 0;
}
C ++ 20 <chrono>jest nadal w budowie dla gcc. Nie widziałem publicznych ETA.
Twoja składnia std::chrono::parsewygląda poprawnie. Jeśli chcesz skorzystać z bezpłatnego podglądu języka C ++ 20 typu open source z samym nagłówkiem<chrono> , możesz go uruchomić, dodając #include "date/date.h"i używając date::parsezamiast tego.
Zauważ, że wynik myDatebędzie 2020-05-24 00:00:00 UTC.
std::put_timeżyje w nagłówku <iomanip>i jest manipulatorem . Po dodaniu tego nagłówka <iostream>możesz go używać w następujący sposób:
std::cout << "date: " << std::put_time(&tm, "%Y-%m-%e") << '\n';
Jeśli potrzebujesz danych wyjściowych w a std::string, będziesz musiał przesłać strumieniowo manipulator do std::stringstreampierwszego.
C ++ 20 <chrono>zapewni alternatywę dla C API do formatowania:
std::cout << "date: " << std::format("{%Y-%m-%e}", myDate) << '\n';
Biblioteka podgląd zapewnia również to z nieco zmienionym formacie ciąg:
std::cout << "date: " << date::format("%Y-%m-%e", myDate) << '\n';
Jana Duggar otwarcie mówiła o swoich poszukiwaniach miłości. Oto wszystko, co powiedziała na ten temat i jej pięcioletnie okno na małżeństwo.
Gwiazda „Outlandera”, Sam Heughan, niedawno ujawnił, co zabierze z planu, aby upamiętnić Jamiego Frasera, rolę, która uczyniła go gwiazdą.
„She Loves You” została napisana w godzinę, nagrana w jeden dzień i była piosenką The Beatles z jednym z ich najlepszych wykonań w karierze.
Dolly Parton i jej babcia Bessie miały szczególny związek. Babcia Parton była bardzo chora, ale to nie powstrzymało Dolly przed zrobieniem jej psikusa.
Można by pomyśleć, że dąb lub hikora są wytrzymałe, ale jeśli chodzi o najtwardsze drewno na świecie, to nawet się do nich nie zbliżają.
Ocean jest pełen piękna, ale kryje też jedne z najstraszniejszych stworzeń morskich na świecie. Wiele z nich czai się głęboko pod powierzchnią oceanu, w mrocznym, podciśnieniowym świecie głębin morskich.
Jeśli walczysz z wrogimi mobami lub przygotowujesz się do scenariuszy PvP, znajomość najlepszych zaklęć miecza w Minecrafcie może dać ci znaczną przewagę. Zaklinanie mieczy pozwala zadawać większe obrażenia, zwiększać liczbę przedmiotów wypadających z potworów i wydłużać trwałość miecza.
Kiedy ludzie mówią o krajach socjalistycznych, często wyobrażają sobie pełną kontrolę rządu i brak własności prywatnej. Jednak w praktyce gospodarki socjalistyczne są bardzo zróżnicowane.
W „Children” pojawia się epizod ze znanym nazwiskiem i kilka druzgocących wiadomości
Uważa się, że ten RAV4 jest w doskonałym stanie i jest przygotowany do gry w muzyczne krzesła.
Na nagraniu z drona uchwycono strażaków, którzy najwyraźniej walczyli o ugaszenie pożaru.
Eyes of Wakanda jest bezpośrednio powiązany z MCU, a także aktualizacje X-Men '97, What If..., Daredevil i nie tylko.
Długoletni redaktor naczelny, który dołączył do American Vogue w 1988 r., ogłosił tę nowinę na zebraniu personelu w czwartek 26 czerwca rano.
„Laguna Beach” opowiadało o życiu licealistów Lauren Conrad, Kristin Cavallari, Stephena Collettiego i innych w połowie lat 2000. Oto, gdzie obecnie znajdują się członkowie obsady reality show MTV.
Ava Gardner była żoną Mickeya Rooneya i Franka Sintry, a także spotykała się z kilkoma innymi gwiazdami Hollywood. Oto spojrzenie wstecz na historię randek Avy Gardner.
John Cleese poślubił swoją żonę Jennifer Wade w 2012 roku. Oto wszystko, co warto wiedzieć o żonie Johna Cleese'a, Jennifer Wade.
Uderzyło mnie to nagle, jak to często bywa. Znowu jest w połowie <Nie, nie ten w Pacyfiku, bordowy, ten na karnawale> Każdy nagłówek jest głośny…..
W 2022 roku, wraz z wydaniem GPT-3, umiejętność pisania wydaje się tracić na znaczeniu. Dzięki sztucznej inteligencji osoby o słabym pisaniu mogą również generować wysokiej jakości personel.
W dzisiejszym dynamicznym i konkurencyjnym świecie kariera odgrywa znaczącą rolę w rozwoju osobistym, stabilności finansowej i ogólnej satysfakcji z życia. Jednak wiele osób wpada w nieustający cykl stagnacji i niezadowolenia, stopniowo marnując swoje życie zawodowe.
W zeszłym tygodniu zauważyłem komunikat prasowy, wysłany za pośrednictwem PressGazette (brytyjski serwis informacyjny). W artykule ogłoszono, że Acast, skandynawska firma hostingowa i reklamowa podcastów, będzie przewodzić konsorcjum „prawdopodobnie najbardziej wpływowych” wydawców podcastów.