2012-08-27 70 views
0

我試圖創建一個與當前時間和日期創建包含time_t的字符串時出錯?

time_t t = time(NULL); //get time passed since UNIX epoc 
struct tm *currentTime = localtime(&t); 
string rightNow = (currentTime->tm_year + 1900) + '-' 
    + (currentTime->tm_mon + 1) + '-' 
    + currentTime->tm_mday + ' ' 
    + currentTime->tm_hour + ':' 
    + currentTime->tm_min + ':' 
    + currentTime->tm_sec; 

我得到了錯誤的字符串

初始化的「STD參數1 :: basic_string的< _CharT,_Traits, _Alloc> :: basic_string(const _CharT *,const _Alloc &)[with _CharT = char,_Traits = std :: char_traits,_Alloc = std :: allocator]'|

我擔心的第一個「+」是在一個字符串中使用(因爲它可以表示連接)的事實是,它是在括號使其平均增加?雖然我認爲這個問題是不一樣的,因爲編譯器在我給出的最後一行給出錯誤。

回答

8

在C++中,不能使用+運算符連接數字,字符和字符串。來連接字符串這種方式,可以考慮使用stringstream

time_t t = time(NULL); //get time passed since UNIX epoc 
struct tm *currentTime = localtime(&t); 
ostringstream builder; 
builder << (currentTime->tm_year + 1900) << '-' 
<< (currentTime->tm_mon + 1) << '-' 
<< currentTime->tm_mday << ' ' 
<< currentTime->tm_hour << ':' 
<< currentTime->tm_min << ':' 
<< currentTime->tm_sec; 
string rightNow = builder.str(); 

另外,考慮使用Boost.Format庫,它有輕微更好的語法。

希望這會有所幫助!

相關問題