C++ 复制结构tm

C++ 复制结构tm,c++,glibc,tm,time-t,C++,Glibc,Tm,Time T,glibc版本的struct tm有其他字段 long tm_gmtoff; /* Seconds east of UTC */ const char *tm_zone; /* Timezone abbreviation */ (参考号:) 我的问题是:如果我有一个名为struct tm a的数据,我想将其复制到另一个struct tm b,如下代码所示: time_t t = time(0); const tm *pa = localtime(&t);

glibc版本的struct tm有其他字段

long tm_gmtoff;           /* Seconds east of UTC */
const char *tm_zone;      /* Timezone abbreviation */
(参考号:) 我的问题是:如果我有一个名为struct tm a的数据,我想将其复制到另一个struct tm b,如下代码所示:

time_t t = time(0);
const tm *pa = localtime(&t);
struct tm a;
if(pa) {
    memcpy(&a, pa, sizeof(a));
}

但是,转基因豆腐和转基因豆腐区会发生什么?如何也复制这些字段?

这是编译器的工作。它将采取一切必要的行动。
只要做:


这是编译器的工作。它将采取一切必要的行动。
只要做:


为什么你认为这两个字段不会被复制?将此移到答案…对于感兴趣的人,这里有一个现代的、线程安全的、跨平台的C++11/14/17库,用于处理时区相关问题:为什么你认为这两个字段不会被复制?将此移到答案…对于感兴趣的人,这里有一个现代的、线程安全的,跨平台,用于处理时区相关问题的C++11/14/17库:仅适用于那些对所有权感兴趣的人:但tm_zone是一个字符数组,复制将不是深度复制,而是共享指针的浅层复制这是事实。但我看到的是,时区值被忽略,而使用区域设置。这可能是错误的,但我认为这正是那些好奇所有权的人的工作方式:但tm_zone作为一个字符数组,复制不会是深度复制,而是共享指针的浅层复制这是正确的。但我看到的是,时区值被忽略,而使用区域设置。这可能是错误的,但我认为这就是它的工作原理
struct tm a = *localtime(&t);