C++ 使用localtime时访问tm结构的成员
我尝试使用以下代码以HH:MM:SS格式返回时间。我以前使用的是C++ 使用localtime时访问tm结构的成员,c++,pointers,struct,C++,Pointers,Struct,我尝试使用以下代码以HH:MM:SS格式返回时间。我以前使用的是localtime,但是考虑到这一点,我认为我应该切换到localtime\u 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(n
localtime
,但是考虑到这一点,我认为我应该切换到localtime\u 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 uderlinesnow->tm_hour
,now->tm_min
和now->tm_sec
,说
Error: expression must have a pointer type
当我编译它时,我收到以下错误:
error C2819: type 'tm' does not have an overloaded member 'operator ->'
我对指针和结构非常笨拙,所以有人能告诉我哪里出了问题以及如何修复它吗。下面是它的用法示例:
/* 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;
}
/*本地时间示例*/
#包括/*看跌期权,printf*/
#包括/*time\u t、struct tm、time、localtime*/
int main()
{
时间与时间;
结构tm*时间信息;
时间(&rawtime);
timeinfo=localtime(&rawtime);
printf(“当前本地时间和日期:%s”,asctime(timeinfo));
返回0;
}
另外,通过向源文件中添加以下代码,可以禁用VS中不推荐使用的警告(错误):
#pragma warning (disable : <The error or warning code it gives when you use the unsafe version>)
#杂注警告(禁用:)
我已经试过了,尽管它编译的MSVC仍然在语句下面加下划线,并且返回-1:-1:-1。在使用它之前,你需要初始化t
,或者传递nullptr
。如果你读了这个问题,你会发现我试图避免localtime