我有变量tmit : long tmit;. 我在这段代码中遇到错误:
printf("Time: %s",ctime(&tmit));
Run Code Online (Sandbox Code Playgroud)
并且错误说: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而不会丢失任何有关时间的信息或如何更改此代码.我正在研究这个答案,但我得到了错误.
您不能简单地将一种类型的指针“转换”为指向不兼容对象类型的指针。
您想要做的是创建另一种类型的对象,然后使用对象类型之间的隐式转换对其进行初始化,最后将指针传递给新创建的对象:
std::time_t t = tmit;
ctime(&t);
Run Code Online (Sandbox Code Playgroud)
一般情况下,你不能因为std::time_t和整数之间没有任何合理的联系long.
在您的特定系统上,std::time_t是一个long long,所以你可以这样做
std::time_t temp = tmit;
Run Code Online (Sandbox Code Playgroud)
然后使用temp的地址.请注意,这不需要在编译器或编译器版本之间移植(尽管我不希望后者破坏).
值得检查保存的内容是否以合理的方式tmit被函数解释ctime,因为您没有告诉我们它来自何处.
根据tmit它的生成方式,使用a std::time_t tmit而不是long tmitget get 也可能是一个好主意,从而完全消除了这个转换问题.
如果您不必使用旧的C风格时间工具,请查看C++ 11 <chrono>标头.
| 归档时间: |
|
| 查看次数: |
13842 次 |
| 最近记录: |