C++ 呼叫时间,以C++;更改我的结构tm
我试图将当前时间与文件的日期修改时间进行比较,但遇到了一个奇怪的问题。我有一个struct tm*,它保存文件被修改的时间,但它在我调用时间(NULL)后更改为当前日期 我的代码:C++ 呼叫时间,以C++;更改我的结构tm,c++,c,time,C++,C,Time,我试图将当前时间与文件的日期修改时间进行比较,但遇到了一个奇怪的问题。我有一个struct tm*,它保存文件被修改的时间,但它在我调用时间(NULL)后更改为当前日期 我的代码: printf("month: %d\n", tmst->tm_mon); time_t curTime = time(NULL); printf("month: %d\n", tmst->tm_mon); struct tm * curSt = localtime ( &curTi
printf("month: %d\n", tmst->tm_mon);
time_t curTime = time(NULL);
printf("month: %d\n", tmst->tm_mon);
struct tm * curSt = localtime ( &curTime );
printf("month: %d\n", tmst->tm_mon);
…其中st
是文件的struct stat
。输出为:
month: 11
month: 5
为什么会这样?我应该采取哪些不同的做法?与文档中的不同: 返回的值指向一个内部对象,该对象的有效性或值可能会因随后对gmtime或localtime的任何调用而改变 阅读文档 文档告诉您函数是如何工作的
(返回指针是一条重要线索:你认为谁会释放指针对象?:D)从文档中: 返回的值指向一个内部对象,该对象的有效性或值可能会因随后对gmtime或localtime的任何调用而改变 阅读文档 文档告诉您函数是如何工作的 (这
localtime
返回指针是一条重要线索:您认为谁会释放指针对象?:D)如手册页面中所述:
返回值指向一个静态分配的结构,该结构可能被对任何日期和时间函数的后续调用所覆盖
如果不希望从下方修改该值,则需要将其复制出来,例如:
// Dereference and copy the result:
struct tm tmst = *localtime ( &st.st_mtime );
您也可以使用可重入变量localtime\r
将结果复制到传递给它的参数中,但请注意,此函数不可移植。如手册页中所述:
返回值指向一个静态分配的结构,该结构可能被对任何日期和时间函数的后续调用所覆盖
如果不希望从下方修改该值,则需要将其复制出来,例如:
// Dereference and copy the result:
struct tm tmst = *localtime ( &st.st_mtime );
您还可以使用可重入变量
localtime\r
将结果复制到传递给它的参数中,但请注意,此函数不可移植。这不是struct tm
。这是一个struct tm*
。它不是struct tm
。这是一个struct tm*
。