Czy w bibliotece daty i godziny Boost jest funkcja narzędziowa do konwersji krótkich ciągów miesiąca (np. Jan, Luty, Mar, Kwiecień) na typ boost::gregorian::greg_month? Dokumentacja biblioteki nie jest świetna i nie widzę niczego w nagłówkach.
2 odpowiedzi
Hacky obejść mogą być:
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
int main(void)
{
auto ptr = boost::gregorian::greg_month::get_month_map_ptr();
if (ptr)
{
auto it = ptr->begin();
for(; it != ptr->end(); ++it)
{
std::cout << it->first << " " << it->second << '\n';
}
}
}
Ta mapa zawiera mapowanie między wszystkimi krótkimi/długimi nazwami i krótkimi niezbędnymi do utworzenia instancji greg_month
. Wystarczy stworzyć wokół niego małe opakowanie...
Zgodnie z odkryciem Graeme'a istnieje funkcja wygody, która już to obejmuje boost::date_time::month_str_to_ushort<>
Tak, istnieją przedziały czasu dat wzmocnienia, których można używać do tworzenia ustawień regionalnych i umieszczania ich w strumieniach.
Uważaj jednak, że jeśli zamierzasz wydrukować lub przeanalizować dużą liczbę dat i godzin, nie tworzysz aspektu i lokalizacji dla każdego z nich, które analizujesz.
Poszukaj tutaj dokumentacji dotyczącej wprowadzanie dat. Niektóre z ich przykładów używają krótkich nazw miesięcy, które wydają się mieć %b
jako jego specyfikator formatu
Podobne pytania
Nowe pytania
c++
C ++ to język programowania ogólnego przeznaczenia. Pierwotnie został zaprojektowany jako rozszerzenie C i ma podobną składnię, ale teraz jest to zupełnie inny język. Użyj tego tagu w przypadku pytań dotyczących kodu (który ma zostać) skompilowany za pomocą kompilatora C ++. Użyj znacznika specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardu [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] lub [C ++ 23] itp. .