Strftime проблема в классе или функции - PullRequest
0 голосов
/ 03 октября 2018

Я пишу этот код на главном, он просто отлично работает, но когда я пытаюсь поместить это в метод функции или класса, он не работает, почему?также, когда я отлаживаю этот код, кажется, что он не компилирует time_t и struct tmp.

const char*  getFormat()  { 
        time_t rawtime;
        struct tm * timeinfo;
        char buffer[80];

        time(&rawtime);
        timeinfo = localtime(&rawtime);

        strftime(buffer, sizeof(buffer), "%d.%m.%Y H%:%i", timeinfo);
        return buffer;
}

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вместо использования strftime вы, вероятно, захотите использовать std::put_time.Он принимает идентичную строку формата, поэтому запись текущего времени будет выглядеть примерно так:

time_t rawtime = std::time(nullptr);
tm *timeinfo = std::localtime(&rawtime);

std::cout << std::put_time(timeinfo, "%d.%m.%Y %H:%I") << "\n";

Это было добавлено в C ++ 11, так что оно довольно широко доступно уже довольно давно.

0 голосов
/ 03 октября 2018

Ну, просто, чтобы подвести итог тому, что сказали другие комментаторы (РЕДАКТИРОВАТЬ: и правильно выполнить работу), этот код отлично работает:

#include <time.h>
#include <string>
#include <iostream>

std::string getFormat ()
{ 
    time_t rawtime;
    time(&rawtime);
    struct tm *timeinfo = localtime(&rawtime);
    char buffer [80];
    strftime(buffer, sizeof (buffer), "%d.%m.%Y %H:%I", timeinfo);
    return std::string (buffer);
}

int main ()
{
    std::string s = getFormat ();
    std::cout << s << "\n";
}

Вывод:

03.10.2018 20:08

Live демо

...