2012-08-06 55 views
0

我想寫一個時間戳到一個特定格式的文件。如何在C++中使用字符串修飾符創建新字符串?

有沒有辦法使用修飾符創建一個新的字符串(請參閱下面的printf代碼)?或者有另一種方法在TextStream中使用字符串修飾符?

printf("%02d-%02d-%02d_%02d:%02d:%02d.%02d\n", 
     st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds); 
+0

什麼是'TextStream'? – 2012-08-06 20:19:01

+0

你會詳細解答你的問題嗎?這是一個與C&C++相交的程序嗎?這可能是一個C的例子,你想在C++中做什麼?這是我正在處理的一個問題,處理其他語言中的代碼示例,而不是明確意圖所需的建議。謝謝一堆! – ChiefTwoPencils 2012-08-06 20:48:41

+0

我希望使用字符串流將字符串寫入與我的示例中printf格式相同的文件。使用sprintf使這成爲可能! – Makaku00 2012-08-07 07:33:47

回答

1

如果使用sprintf而不是printf,你想要的字符串寫入到char緩衝區,而不是打印出來。

sprintf(buffer, "%02d-%02d-%02d_%02d:%02d:%02d.%02d\n", 
     st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds); 

您還可以使用Boost Format library

+0

啊哈!謝謝..我不是很熟悉C++。我曾嘗試sprintf,但我顯然不正確地使用它! – Makaku00 2012-08-06 20:23:44

5

的類型安全的替代,具有過緩衝區的大小沒有顧慮,將直接或使用IO manipulators無論是在輸出流上std::ostringstream

#include <iostream> 
#include <string> 
#include <sstream> 
#include <iomanip> 

int main() 
{ 
    std::ostringstream s; 
    s << std::setfill('0') 
     << std::setw(2) << 1 << ':' // st.wYear, etc 
     << std::setw(2) << 97 << ':' 
     << std::setw(2) << 4; 

    std::cout << s.str() << "\n"; 

    return 0; 
} 

另外,前面的回答示出方法用於將int轉換爲std::stringAppend an int to a std::string

相關問題