我有一个程序将数据保存到文件,我想在该日志上放置当前日期/时间的时间戳,但是当我尝试将时间写入文件时,它将不会显示,但其他数据我写意志。
#include <iostream>
#include <windows.h>
#include <fstream>
#include <string>
#include <sstream>
#include <direct.h>
#include <stdio.h>
#include <time.h>
using namespace std;
string header_str = ("NULL");
int main()
{
for(;;)
{
stringstream header(stringstream::in | stringstream::out);
header << "datasdasdasd_";
time_t rawtime;
time ( &rawtime );
header << ctime (&rawtime);
header_str = header.str();
fstream filestr;
filestr.open ("C:\\test.txt", fstream::in | fstream::out | fstream::app | ios_base::binary | ios_base::out);
for(;;)
{
filestr << (header_str);
}
filestr.close();
}
return 0;
}
任何人都知道如何解决这个问题?
答案 0 :(得分:4)
我就是这样做的,有一个帮助函数,它只是为你提供所需格式的日期和时间,以便包含在任何输出流中:
#include <time.h>
#include <iostream>
#include <fstream>
using namespace std;
// Helper function for textual date and time.
// DTTMSZ must allow extra character for the null terminator.
#define DTTMFMT "%Y-%m-%d %H:%M:%S "
#define DTTMSZ 21
static char *getDtTm (char *buff) {
time_t t = time (0);
strftime (buff, DTTMSZ, DTTMFMT, localtime (&t));
return buff;
}
int main(void) {
char buff[DTTMSZ];
fstream filestr;
filestr.open ("test.txt", fstream::out|fstream::app);
// And this is how you call it:
filestr << getDtTm (buff) << "Your message goes here" << std::endl;
filestr.close();
return 0;
}
这将创建文件test.txt
,其内容为:
2010-05-05 13:09:13 Your message goes here
答案 1 :(得分:0)
也许这会起作用?:
time_t rawtime;
时间(&amp; rawtime); 标题&lt;&lt; “时间是:%s”+ ctime(&amp; rawtime);
希望这有效
答案 2 :(得分:0)
一个非常好的提示是查看boost\date_time library。这很棒,它让你需要的一切都支持简单的输出和格式化,并且是可移植的。
值得一试。