2011-08-22 28 views
0

目前我有使用這樣的東西如何創建自定義boost :: posix_time to_string formaters?

ptime t = from_time_t(last_write_time(p)); 
std::string Created = boost::posix_time::to_iso_extended_string(t) ; 

或:

ptime t = from_time_t(last_write_time(p)); 
std::ostringstream formatter; 
formatter.imbue(std::locale(std::cout.getloc(), new boost::posix_time::time_facet("%a, %d %b %Y %H:%M:%S GMT"))); 
formatter << t; 
std::string Created = formatter.str(); 

首先是快,但用什麼瀏覽器要用作標題時間格式不兼容,二是太慢。所以我想知道 - 如何創建快速而有效的ptime到字符串formater,將ptime轉換爲"%a, %d %b %Y %H:%M:%S GMT"格式,並且不會使用ostringstream.str()(因爲它們對於我的目的來說太慢了)?

+0

嗨,我有同樣的問題,我看你選中此答案正確的,但我似乎無法瞭解你使用它。你有什麼傳遞給sprintf來獲得寫入值? –

回答

1

我總是因爲使用sprintf而發火,但是有什麼不對嗎?

char buffer[...]; 
sprintf(buffer, "%s, %d %s %04d %02d:%02d:%02d GMT", t ...); 
std::string Create(buffer); 

我不知道的ptime類型的細節,所以我不知道你會如何大,使緩衝區是安全的,或者你會放的論據sprintf的,但毫無疑問,你可以填寫細節。

還有C函數strftime這可能是你的興趣,http://www.cplusplus.com/reference/clibrary/ctime/strftime/

相關問題