将 long int 转换为 const time_t
Convert long int to const time_t
我有变量 tmit:long tmit;
。我在这段代码中出错:
printf("Time: %s",ctime(&tmit));
错误说:Cannot convert 'long int*' to 'const time_t* {aka const long long int*}' for argument '1' to 'char* ctime(const time_t*)'
我的问题是,如果我想查看日期,如何将 long 转换为 time_t 而不会丢失任何有关时间的信息或如何更改此代码。我正在处理此 answer,但出现错误。
您不能简单地"convert"一种指向不兼容对象类型的指针。
你想做的是创建另一个类型的对象,然后使用对象类型之间的隐式转换对其进行初始化,最后将指针传递给新创建的对象:
std::time_t t = tmit;
ctime(&t);
一般来说,您不能这样做,因为 std::time_t
和 long
.
这样的整数之间不需要任何合理的联系
在您的特定系统上,std::time_t
是 long long
,因此您可以直接执行
std::time_t temp = tmit;
然后使用temp
的地址。请注意,这不需要跨编译器或编译器版本可移植(尽管我不希望后者中断)。
值得检查 tmit
中保存的内容是否被 ctime
等函数以合理的方式解释,因为您没有告诉我们它来自哪里。
根据这个 tmit
的产生方式,从一开始就使用 std::time_t tmit
而不是 long tmit
可能也是一个好主意,从而完全消除这个转换问题.
如果您不必使用旧的 C-style 时间工具,请查看 C++11 <chrono>
header.
我有变量 tmit:long tmit;
。我在这段代码中出错:
printf("Time: %s",ctime(&tmit));
错误说:Cannot convert 'long int*' to 'const time_t* {aka const long long int*}' for argument '1' to 'char* ctime(const time_t*)'
我的问题是,如果我想查看日期,如何将 long 转换为 time_t 而不会丢失任何有关时间的信息或如何更改此代码。我正在处理此 answer,但出现错误。
您不能简单地"convert"一种指向不兼容对象类型的指针。
你想做的是创建另一个类型的对象,然后使用对象类型之间的隐式转换对其进行初始化,最后将指针传递给新创建的对象:
std::time_t t = tmit;
ctime(&t);
一般来说,您不能这样做,因为 std::time_t
和 long
.
在您的特定系统上,std::time_t
是 long long
,因此您可以直接执行
std::time_t temp = tmit;
然后使用temp
的地址。请注意,这不需要跨编译器或编译器版本可移植(尽管我不希望后者中断)。
值得检查 tmit
中保存的内容是否被 ctime
等函数以合理的方式解释,因为您没有告诉我们它来自哪里。
根据这个 tmit
的产生方式,从一开始就使用 std::time_t tmit
而不是 long tmit
可能也是一个好主意,从而完全消除这个转换问题.
如果您不必使用旧的 C-style 时间工具,请查看 C++11 <chrono>
header.