2014-03-03 119 views
0

我想將時間戳複製到字符串temp將時間戳複製到字符串

cout << "Begin time: " << ctime(&timer); 

成功打印出:

開始時間:星期一3月3日17點40分04秒2014

這是我想要的格式。

我現在的代碼;然而,編譯,但沒有打印任何東西。

sprintf(temp, "Begin time: %d\n", ctime(&timer)); 
cout << temp << endl; 
+0

很確定%d表示雙倍。 ctime()返回一個char *。那麼試試%s? – stakSmashr

+0

@RuolinFan很確定'%d'表示十進制_整數_。 '%lf'是雙倍的。 – timrau

+0

啊我看到了,當我說「雙」我只是指十進制數。感謝您的洞察力! – stakSmashr

回答

5

由於ctime()返回值看起來像一個字符串,你應該寫

sprintf(temp, "Begin time: %s\n", ctime(&timer)); 

注意%s的字符串,而不是%d爲十進制整數。

但是,爲了確保不使緩衝區溢出,這將是更好地使用ostringstreamstring

std::ostringstream strm; 
strm << "Begin time: " << ctime(&timer) << "\n"; 
std::string temp(strm.str()); 
cout << temp << endl; 
2

你總是可以使用stringstream,並且使用它的str()成員。

stringstream ss; 
    ss << "Begin time: " << ctime(&timer); 
    cout << ss.str() << endl;