gpt4 book ai didi

C++ 结构 tm 和 time_t

转载 作者:可可西里 更新时间:2023-11-01 15:48:26 28 4
gpt4 key购买 nike

我这里有很多时间:

struct cl{
unsigned char *buffer;
time_t t = time(0);
struct tm * ct = localtime(&t);
};

然后:

cl sadi[10];

但是例如,我在 21:58 得到了 sadi[5],而当我在 得到了 sadi[6] >21:59。然后我再次检查我所有的 sadi[].ct->tm_min 都是 59。这有什么问题?是不是抓不住那一刻,会一直更新吗?如果是这样,我怎样才能捕捉到时间的瞬间并且它不会像那样更新。

最佳答案

这一行:

struct tm* ct = localtime(&t);

问题是localtime(&t) 返回的指针 是一个静态 内部缓冲区。所以每次调用它都会返回完全相同的指针值(地址)。这意味着您的所有数组元素都有指向同一个 struct tm 对象的指针。

一个解决方案是在每次调用 localtime 时制作数据的拷贝:

struct cl {
unsigned char* buffer;
time_t t = time(0);
struct tm ct = *localtime(&t);
};

现在我声明 struct tm ct;(不是指针)并使用返回指针 *localtime(&t)< 的解引用值 初始化它.

关于C++ 结构 tm 和 time_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40830375/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com