C++ stl是否有標準的時間類?或者在寫入流之前必須轉換爲C字符串。例如,我要輸出的當前日期/時間爲一個字符串流:C++中是否有標準的日期/時間類?
time_t tm(); ostringstream sout; sout << tm << ends;
在這種情況下,我得到寫出來爲數字,沒有任何格式的當前日期/時間。我可以用 C-運行時函數strftime
格式化TM第一,但好像它不應該是必要的,如果STL具有可從time_t的值來實例化一個時間類
C++ stl是否有標準的時間類?或者在寫入流之前必須轉換爲C字符串。例如,我要輸出的當前日期/時間爲一個字符串流:C++中是否有標準的日期/時間類?
time_t tm(); ostringstream sout; sout << tm << ends;
在這種情況下,我得到寫出來爲數字,沒有任何格式的當前日期/時間。我可以用 C-運行時函數strftime
格式化TM第一,但好像它不應該是必要的,如果STL具有可從time_t的值來實例化一個時間類
STL的不是一部分,但衆所周知庫提振。
我會去使用boost::date
的方式。以下是一些示例:http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/date_time_io.html#date_time.io_tutorial。
如果您沒有試出來升壓但我鼓勵你,因爲這樣做可以節省您大量的討厭的問題,因爲它掩蓋大多數操作系統相關的東西,如線程,例如。 boost
中的許多內容僅爲標題(模板庫)。但是,日期時間需要一個lib或dll。
吹毛求疵:STL的是與通用容器和算法等標準模板庫交易,也不可能合併對日期的處理和計算類甚至在未來...
的C++標準庫本身包括STL和以前版本的C標準庫。後者通過#include <ctime>
提供了一些日期和時間相關的功能,這已經在上面提到過了。
如果包裹(或簡單地使用)這些功能比boost拉動足夠(和更快),去與這些。他們沒有錯。
確定。這是最接近我已經發現了大約直接寫入時間流:
time_t t(time(NULL)); // current time
tm tm(*localtime(&t));
std::locale loc(""); // current user locale
ostringstream sout;
const std::time_put<TCHAR> &tput =
std::use_facet<std::time_put<TCHAR> >(loc);
tput.put(sout.rdbuf(), sout, _T('\0'), &tm, _T('x'));
sout << ends;
CString sTest(sout.str().c_str());
一個非常有用的指南是Apache C++標準庫參考指南 http://stdcxx.apache.org/doc/stdlibref/time-put.html#sec13
現在有一個完整的和現代的C提案委員會收到++日期/時間/時區:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0355r1.html 。這個建議基於這個github倉庫:https://github.com/HowardHinnant/date,它有一個完整的實現,完整的文檔和一個活躍的用戶社區。 – 2016-12-03 17:59:29