C++ 正在尝试将存储在字符中的时间转换为正常形式。打印一个随机值。怎么了?

C++ 正在尝试将存储在字符中的时间转换为正常形式。打印一个随机值。怎么了?,c++,time,C++,Time,下面是我编写的一个简短代码,用于将以字符串或字符形式输入的时间打印到hh:mm:ss表单中。 没有编译错误,但给出了一个垃圾值。怎么了? 注意:我不想打印日/月/年内容。 # include<iostream> # include<ctime> using namespace std; int main(){ const char *time_details = "15:34:12"; struct tm tm; str

下面是我编写的一个简短代码,用于将以字符串或字符形式输入的时间打印到hh:mm:ss表单中。 没有编译错误,但给出了一个垃圾值。怎么了? 注意:我不想打印日/月/年内容。

# include<iostream>
# include<ctime>
using namespace std;

int main(){

        const char *time_details = "15:34:12";
        struct tm tm;
        strptime(time_details, "%H:%M:%S", &tm);
        time_t t = mktime(&tm);
        cout << t  << endl;


}
#包括
#包括
使用名称空间std;
int main(){
const char*time_details=“15:34:12”;
struct-tm;
strtime(时间详细信息,“%H:%M:%S”、&tm);
时间t=mktime(&tm);

strtime
上的手册页查看:

如果格式字符串没有包含足够的转换规范来完全指定生成的struct tm,则tm的未指定成员将保持不变

您需要设置这些其他成员,或者只使用已设置的成员

更新
这里的另一个问题是使用
mktime

如果无法表示自历元起的时间,函数应返回值(time_t)-1


如果您只是将结构
tm
归零,您将创建一个无法用Unix时间格式表示的时间(自1970年1月1日00Z起的秒数)。至少,您需要将年份和月份的日期设置为非零值。

我觉得不错。这会打印出表示该时间的基本时间戳。通常这是自1970年1月1日午夜以来的秒数。我记不得这里默认填写的日期/月/年。