我想寫一個時間戳到一個特定格式的文件。如何在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);
我想寫一個時間戳到一個特定格式的文件。如何在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);
如果使用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。
啊哈!謝謝..我不是很熟悉C++。我曾嘗試sprintf,但我顯然不正確地使用它! – Makaku00 2012-08-06 20:23:44
的類型安全的替代,具有過緩衝區的大小沒有顧慮,將直接或使用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::string
:Append an int to a std::string
什麼是'TextStream'? – 2012-08-06 20:19:01
你會詳細解答你的問題嗎?這是一個與C&C++相交的程序嗎?這可能是一個C的例子,你想在C++中做什麼?這是我正在處理的一個問題,處理其他語言中的代碼示例,而不是明確意圖所需的建議。謝謝一堆! – ChiefTwoPencils 2012-08-06 20:48:41
我希望使用字符串流將字符串寫入與我的示例中printf格式相同的文件。使用sprintf使這成爲可能! – Makaku00 2012-08-07 07:33:47