//2023-9-3 by 小小见大大污
//定时输出功能主要利用chrono实现定时器功能,每隔一秒钟获得系统时间并输出到控制台,chrono是在std下,属于C++11的标准。
//输出时间的格式还可以改进,改进为:year-month-day
#include <chrono>
#include<iostream>
#include<cstring>
#include <string>
#include <fstream>
#include <string>
#include <vector>
#include<time.h>
#pragma warning(disable:4996)
using namespace std;
using namespace chrono;
vector<string> parseLine(string line)//构造vector容器存放文件数据
{
vector<string> v;
int pos = 0;
int pos2 = 0;
int len = line.length();
while (pos < len)
{
pos2 = line.find(" ", pos);
if (pos2 == -1)
pos2 = len;
v.push_back(line.substr(pos, pos2 - pos));
pos = pos2 + 1;
}
return v;
}
int main()
{
ifstream input_file("文件路径");//读取本地文件
string line;
time_t start_t, end_t;
auto start = system_clock::now();//运用c++11auto
auto end = system_clock::now();
start_t = system_clock::to_time_t(start);//to_time_t函数:time_point转换成time_t秒(即ctime标准类型)
long long duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
//用getline()函数取出文件中的一行,存入字符串变量line中
while (getline(input_file, line))
{
//调用parseLine函数
vector<string> line_content = parseLine(line);
for (int i = 0; i < line_content.size(); ++i)
{
for (int i = 0;;) //用for语句进行判断
{
end = system_clock::now();
duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
if (duration == 1000) //如果时间间隔为1000ms即1秒就退出for语句
{
break;
}
}
end_t = system_clock::to_time_t(end);//to_time_t函数:time_point转换成time_t秒(即ctime标准类型)
std::cout << ctime(&end_t)<< line_content[i];//每秒输出一行
start = end;//将start更新成当前end时刻,便于下次循环
duration = 0;//将duration置为0,便于下次循环
cout << endl;
}
cout << endl;
}
input_file.close();
return 0;
}
运行示例:
定时器功能参考:
c++chrono实现一个计时器,每隔一秒向屏幕输出当前时间_c++ chrono 计时_爱吃代码的航航的博客-CSDN博客