使用localtime_s时访问tm结构的成员

时间:2015-07-06 08:09:35

标签: c++ pointers struct

我尝试使用以下代码以HH:MM:SS格式返回时间。我以前使用的是localtime,但是考虑到这是折旧的,我认为我会像这样切换到localtime_s

time_t t;
struct tm now;
localtime_s(&now, &t);
std::string stimeNow = std::to_string(now->tm_hour) + ":" + std::to_string(now->tm_min) +":" + std::to_string(now->tm_sec);

然而,MSVC uderlines now->tm_hournow->tm_minnow->tm_sec,说

Error: expression must have a pointer type

当我编译它时,我收到以下错误:

error C2819: type 'tm' does not have an overloaded member 'operator ->'

我对指针和结构非常不熟练所以有人可以告诉我哪里出错了以及如何解决它。

1 个答案:

答案 0 :(得分:0)

其用法示例如下:

/* localtime example */
  #include <stdio.h>      /* puts, printf */
  #include <time.h>       /* time_t, struct tm, time, localtime */

int main ()
{
    time_t rawtime;
    struct tm * timeinfo;
    time (&rawtime);
    timeinfo = localtime (&rawtime);
    printf ("Current local time and date: %s", asctime(timeinfo));
    return 0;
  }

顺便说一句,您可以通过在源文件中添加以下代码来禁用VS中的弃用警告(错误):

#pragma warning (disable : <The error or warning code it gives when you use the unsafe version>)