Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 计时器用于计算未正确执行的秒数_C++ - Fatal编程技术网

C++ 计时器用于计算未正确执行的秒数

C++ 计时器用于计算未正确执行的秒数,c++,C++,我正在制作一个计时器来计算秒数,直到用户按3,但是程序不工作,并且整数变量“sec”中没有保存任何值。 我错在哪里? 我已经包括了windows.h和ctime.h 代码如下: void func(){ int sec=0 cout<<"Press 3 to end Timer"; cin>>t; while(t!

我正在制作一个计时器来计算秒数,直到用户按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";
                }
void func(){
整数秒=0
库特;
while(t!=3){
睡眠(1);
sec++;}
如果(t==3)
{

cout这是因为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);
#包括
//这只是为了使示例更清晰。
使用名称空间计时;
...
系统时钟::时间点开始时间=系统时钟::现在();
cin>>t;
系统时钟::时间点结束时间=系统时钟::现在();
毫秒持续时间=时间\点\投射(结束时间-开始时间);
此时,duration.count()是等待输入所花费的毫秒数。您可以做一些数学运算将其转换为秒,也可以使用秒来代替,如下所示:

seconds duration = time_point_cast<seconds>(endTime - startTime);
seconds duration=time\u point\u cast(endTime-startTime);
但在本例中,2.9秒将显示为2秒(我认为)。因此我要这样做以输出它:

cout << "Duration: " << (double)duration.count() / 1000.0 << endl;

cout这是因为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);
#包括
//这只是为了使示例更清晰。
使用名称空间计时;
...
系统时钟::时间点开始时间=系统时钟::现在();
cin>>t;
系统时钟::时间点结束时间=系统时钟::现在();
毫秒持续时间=时间\点\投射(结束时间-开始时间);
此时,duration.count()是等待输入所花费的毫秒数。您可以做一些数学运算将其转换为秒,也可以使用秒来代替,如下所示:

seconds duration = time_point_cast<seconds>(endTime - startTime);
seconds duration=time\u point\u cast(endTime-startTime);
但在本例中,2.9秒将显示为2秒(我认为)。因此我要这样做以输出它:

cout << "Duration: " << (double)duration.count() / 1000.0 << endl;

我不能把它移到if语句之后吗?你能做的是得到cin之前的时间,得到cin之后的时间,然后计算。我会更新我的答案一点。我能把它移到if语句之后吗?你能做的是得到cin之前的时间,得到cin之后的时间,然后计算。我会更新我的答案一点。