c++ - 用于计算秒数的计时器未正确实施
问题描述
我正在制作一个计时器来计算用户按下 3 之前的秒数,但是程序不起作用,并且整数变量“sec”中没有保存任何值。我哪里错了?我已经包含 windows.h 和 ctime.h 这是代码:
void func(){
int sec=0
cout<<"Press 3 to end Timer";
cin>>t;
while(t!=3){
Sleep(1);
sec++;}
if(t==3)
{
cout<<"Timer ended";
}
}
解决方案
这是因为 cin >> t 阻塞。也就是说,在输入完成之前,执行不会移动到您的 while 循环。
像这样的东西会起作用:
#include <chrono>
// This is just to make the example cleaner.
using namespace chrono;
...
system_clock::time_point startTime = system_clock::now();
cin >> t;
system_clock::time_point endTime = system_clock::now();
milliseconds duration = time_point_cast<milliseconds>(endTime - startTime);
此时,duration.count() 是等待输入所花费的毫秒数。你可以做一些数学运算把它变成秒,或者你可以像这样使用秒:
seconds duration = time_point_cast<seconds>(endTime - startTime);
但在这种情况下,2.9 秒将显示为 2 秒(我认为)。所以我会这样做来输出它:
cout << "Duration: " << (double)duration.count() / 1000.0 << endl;
或类似的规定。我正在输入这个原始的,所以可能有错别字。
推荐阅读
- image - React Native:如何在没有硬编码值的情况下使底部导航栏图标具有正确的大小?
- javascript - 如何将 url 从 datepicker 传递到 Chartjs URL
- python-3.x - 如何在 ubuntu 中将 python 版本设为默认版本
- scala - Scala 匹配递归对象
- firebase - Firebase Realtime equalTo 不能使用像“+123”这样的字符串
- python - 如何创建基于两个数组的多数投票?
- jquery - 突出显示在特定单元格中具有最大值的表格行
- delphi - 如何在没有错误消息的情况下声明内联变量?
- c++ - 为什么我用 -LTO 构建的 C++ 二进制文件非常大?
- javascript - 如何使 javascript 可拖动在移动设备上工作