类或函数中的strftime问题

时间:2018-10-02 21:58:05

标签: c++ strftime ctime

我在main上编写此代码,效果很好,但是当我尝试将其放在函数或类方法中时,它不起作用,为什么? 同样,当我调试此代码时,似乎不编译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 :(得分:1)

好吧,总结一下其他评论者所说的话(编辑:并正确完成工作),此代码可以正常工作:

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

答案 1 :(得分:0)

您可能不想使用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中添加的,因此已经有相当长的一段时间了。