1、日志显示当前时间
#include <iostream>
#include <chrono>
int main()
{
auto now = std::chrono::system_clock::now();
std::time_t now_c = std::shrono::system_clock::to_time_t(now);
char buffer [26];
ctime_s(buffer, sizeof(buffer), &now_c);
std::cout << "当前时间:" << buffer << std::endl;
}
2、Float或Double型数据,显示多位
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
int main()
{
double number = 123.1456789123456;
std::cout << std::fixed << std::setprecision(15) << number << std::endl;
}
3、使用M_PI进行运算
M_PI的报错原因:没有加#define _USE_MATH_DEFINES,且需要加载<iostream>和<cmath>的上方
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
int main()
{
double pi = M_PI;
std::cout << std::fixed << std::setprecision(15) << pi << std::endl;
}
4、输出经过的时间
#include <iostream>
int main()
{
std::chrono::steady_clock::time_point startTime;
std::chrono::duration <double> durationTime;
startTime = std::chrono::steady_clock::now();
durationTime = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::steady_clock::now () - startTime);
std::cout << "经过时间: " << durationTime.count() << "秒" << std::endl;
}
时钟类型:system_clock、steady_clock、high_resolution_clock
-
system_clock
:这是一个系统级别的时钟,它表示自1970年1月1日UTC以来的时间。它的精度可能不够高,因为它受到系统时间调整的影响。例如,如果用户手动更改了系统时间,system_clock
的值也会相应地更改。system_clock
提供了now()
函数,可以返回当前时间的时间点。 -
steady_clock
:这是一个稳定的时钟,它提供了一个单调递增的时间点序列。它的精度可能比system_clock
更高,因为它不受系统时间调整的影响。steady_clock
提供了now()
函数,可以返回当前时间的时间点。 -
high_resolution_clock更高,因为它使用了最佳可用的时钟源。
high_resolution_clock提供了
now()`函数,可以返回当前时间的时间点。
5、休眠直到指定时间点执行(sleep_until)
#include <iostream>
#include <chrono>
int main()
{
auto start = std::chrono::steady_clock::now();
int count = 0;
while(true)
{
auto next = start + std::chrono::milliseconds(count++ * 100);
double elaspsed = std::chrono::duration_cast<std::chrono::milliseconds>(next - start).count() / 1000.0;
std::cout << "current time: << elapsed << std::endl;
std::this_thread::sleep_until(next); // 休眠直到指定时间点执行
// sleep_for 休眠一段时间
}
}