我如何节省文件的时间?

时间:2010-05-05 04:07:44

标签: c++ time

我有一个程序将数据保存到文件,我想在该日志上放置当前日期/时间的时间戳,但是当我尝试将时间写入文件时,它将不会显示,但其他数据我写意志。

#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;
}

任何人都知道如何解决这个问题?

3 个答案:

答案 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。这很棒,它让你需要的一切都支持简单的输出和格式化,并且是可移植的。

值得一试。