Как мне сэкономить время на файл? - PullRequest
2 голосов
/ 05 мая 2010

У меня есть программа, которая сохраняет данные в файл, и я хочу поместить метку времени текущей даты / времени в этот журнал, но когда я пытаюсь записать время в файл, он не будет отображаться, но другие данные напиши будет.

#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 ]

4 голосов
/ 05 мая 2010

Это то, как я бы это сделал, с помощью вспомогательной функции, которая просто дала вам дату и время в желаемом формате для включения в любой поток вывода:

#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
0 голосов
/ 05 мая 2010

Действительно хороший совет - проверить библиотеку boost \ date_time . Это здорово, он имеет все необходимое, поддерживает простой вывод и форматирование и является переносимым.

Стоит проверить.

0 голосов
/ 05 мая 2010

Может это сработает?:

time_t rawtime;

время (& rawtime); header << "Время:% s" + ctime (& rawtime); </p>

Надеюсь, что это работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...