用c plus plus 14写一个小闹钟程序,解析字符串“2023-04-11 19:01:20”成2023年4月11日19点1分20秒。判断当前时间是到达解析出的多时间,到达闹钟就工作
时间: 2023-06-05 22:04:50 浏览: 103
好的,你需要一个小闹钟程序,可以解析字符串“2023-04-11 19:01:20”成2023年4月11日19点1分20秒,并判断当前时间是否到达闹钟时间,到达后触发闹钟功能。现在我来为您解答。
您可以使用 C++14 标准中的 chrono 库来完成时间相关的计算。以下是代码示例:
```
#include <iostream>
#include <chrono>
#include <ctime>
#include <iomanip>
#include <sstream>
using namespace std;
// 将字符串转换为时间点
chrono::system_clock::time_point str_to_timepoint(const string& str)
{
struct tm tm;
stringstream ss(str);
ss >> get_time(&tm, "%Y-%m-%d %H:%M:%S");
time_t t = mktime(&tm);
return chrono::system_clock::from_time_t(t);
}
// 将时间点转换为字符串
string timepoint_to_str(const chrono::system_clock::time_point& tp)
{
time_t t = chrono::system_clock::to_time_t(tp);
struct tm tm;
localtime_s(&tm, &t);
ostringstream oss;
oss << put_time(&tm, "%Y年%m月%d日%H点%M分%S秒");
return oss.str();
}
int main()
{
string str = "2023-04-11 19:01:20";
auto alarm_time = str_to_timepoint(str);
while (true)
{
auto now = chrono::system_clock::now();
if (now >= alarm_time)
{
cout << "到达闹钟时间: " << timepoint_to_str(alarm_time) << endl;
// 执行闹钟功能
break;
}
else
{
cout << "当前时间: " << timepoint_to_str(now) << endl;
}
// 暂停一秒钟
this_thread::sleep_for(chrono::seconds(1));
}
return 0;
}
```
在上面的代码中,`str_to_timepoint` 函数将输入的字符串解析为时间点。`timepoint_to_str` 函数将时间点转换为字符串。`now` 表示当前时间,`alarm_time` 表示设定的闹钟时间。在主循环中,判断当前时间是否超过闹钟时间,如果超过,则触发闹钟功能。如果未到达闹钟时间,就打印当前时间,并暂停一秒钟。
希望这个小闹钟程序能够满足您的需求。
阅读全文