C++:
Päivämäärän jäsennys merkkijonosta
Miten:
Nykyisessä C++:ssa voit käyttää <chrono>
-kirjastoa käsitelläksesi päivämääriä ja aikoja natiivisti, mutta se ei suoraan tue jäsennyksiä merkkijonoista ilman manuaalista jäsennystä monimutkaisemmissa muodoissa. Kuitenkin ISO 8601 -päivämäärämuotoille ja yksinkertaisille mukautetuille muodoille, tässä on miten voit saavuttaa jäsennyksen.
Käyttäen <chrono>
ja <sstream>
:
#include <iostream>
#include <sstream>
#include <chrono>
#include <iomanip>
int main() {
std::string date_str = "2023-04-15"; // ISO 8601 -muoto
std::istringstream iss(date_str);
std::chrono::year_month_day parsed_date;
iss >> std::chrono::parse("%F", parsed_date);
if (!iss.fail()) {
std::cout << "Jäsennetty päivämäärä: " << parsed_date << std::endl;
} else {
std::cout << "Päivämäärän jäsentäminen epäonnistui." << std::endl;
}
return 0;
}
Esimerkkitulo:
Jäsennetty päivämäärä: 2023-04-15
Monimutkaisemmissa muodoissa tai käytettäessä vanhempia C++ -versioita, suositut kolmannen osapuolen kirjastot kuten date.h
(Howard Hinnantin päivämääräkirjasto) ovat suosittuja. Tässä on miten voit jäsentää erilaisia muotoja sen avulla:
Käyttäen date.h
Kirjastoa:
Varmista, että sinulla on kirjasto asennettuna. Voit löytää sen täältä.
#include "date/date.h"
#include <iostream>
int main() {
std::string date_str = "Huhtikuu 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 << "Jäsennetty päivämäärä: " << parsed_date << std::endl;
} else {
std::cout << "Merkkijonosta päivämäärän jäsentäminen epäonnistui." << std::endl;
}
return 0;
}
Esimerkkitulo (voi vaihdella järjestelmäsi paikallisten asetusten ja päivämääräasetusten mukaan):
Jäsennetty päivämäärä: 2023-04-15