C++:
Einen Datum aus einem String analysieren
Wie:
In modernem C++ kann man die <chrono>
-Bibliothek verwenden, um mit Daten und Zeiten nativ umzugehen, aber sie unterstützt nicht direkt das Parsen aus Strings ohne manuelles Parsen für komplexere Formate. Für ISO 8601-Datenformate und einfache benutzerdefinierte Formate ist hier, wie Sie das Parsen bewerkstelligen können.
Verwendung von <chrono>
und <sstream>
:
#include <iostream>
#include <sstream>
#include <chrono>
#include <iomanip>
int main() {
std::string date_str = "2023-04-15"; // ISO 8601-Format
std::istringstream iss(date_str);
std::chrono::year_month_day parsed_date;
iss >> std::chrono::parse("%F", parsed_date);
if (!iss.fail()) {
std::cout << "Geparstes Datum: " << parsed_date << std::endl;
} else {
std::cout << "Datum konnte nicht geparst werden." << std::endl;
}
return 0;
}
Beispiel für Ausgabe:
Geparstes Datum: 2023-04-15
Für komplexere Formate oder wenn Sie mit älteren C++-Versionen arbeiten, sind Dritt-Bibliotheken wie date.h
(Howard Hinnants Date-Bibliothek) beliebt. Hier ist, wie Sie verschiedene Formate damit parsen können:
Verwendung der date.h
-Bibliothek:
Stellen Sie sicher, dass Sie die Bibliothek installiert haben. Sie finden sie hier.
#include "date/date.h"
#include <iostream>
int main() {
std::string date_str = "April 15, 2023";
std::istringstream iss(date_str);
date::sys_days parsed_date;
iss >> date::parse("%B %d, %Y", parsed_date);
if (!iss.fail()) {
std::cout << "Geparstes Datum: " << parsed_date << std::endl;
} else {
std::cout << "Datum konnte nicht aus dem String geparst werden." << std::endl;
}
return 0;
}
Beispiel für Ausgabe (kann je nach Systemlokalisierung und Datumeinstellungen variieren):
Geparstes Datum: 2023-04-15