C++ 如何在执行循环(C+;+;)时设置一秒的间隔
事实上,我想做一个秒表。在这里,我创建了一个循环,每次循环执行时都增加一个名为seconds的整数的值。但它执行得太快了。因此,我希望循环在每秒钟之后执行。我读过一些关于时钟和时间的讨论,但我甚至不能清楚地理解。所以,我不能在我的代码中使用它。[这已经很久没有我开始学习C++了。所以,我仍然不理解高级的“事物”。 代码如下:C++ 如何在执行循环(C+;+;)时设置一秒的间隔,c++,C++,事实上,我想做一个秒表。在这里,我创建了一个循环,每次循环执行时都增加一个名为seconds的整数的值。但它执行得太快了。因此,我希望循环在每秒钟之后执行。我读过一些关于时钟和时间的讨论,但我甚至不能清楚地理解。所以,我不能在我的代码中使用它。[这已经很久没有我开始学习C++了。所以,我仍然不理解高级的“事物”。 代码如下: int main() { int looper=2; int second=00; while (looper=2){ second++; co
int main()
{
int looper=2;
int second=00;
while (looper=2){
second++;
cout<<second<<endl;}
intmain()
{
int-looper=2;
整数秒=00;
while(活套=2){
第二++;
cout例如:
#include <stdio.h>
#include <windows.h>
void main()
{
int iFullDelay = 1000;
DWORD start = GetTickCount();
#define TIMES_TO_POLL_PER_SECOND 20
for (int i = 0; i < TIMES_TO_POLL_PER_SECOND; i++)
{
Sleep(iFullDelay / TIMES_TO_POLL_PER_SECOND);
printf("%d ", i);
}
DWORD end = GetTickCount();
printf("\r\n%d ms elapsed\r\n", end-start);
}
因此,实际上在1秒内,我们执行了20次某些操作-在本例中,printf.printf本身需要一些时间,这就是为什么1016毫秒会过去,而不是1000毫秒=1秒。因此,如果在循环中执行某些操作,则需要确保它不会消耗太多时间,或者以某种方式测量过去的时间。此函数依赖于
要工作:
#include <ctime>
//function that waits the specified number of seconds
void wait(double seconds) {
clock_t start = clock();
while (double((clock() - start) / CLOCKS_PER_SEC) < seconds) {
//keep looping until number of seconds have passed
}
}
#包括
//等待指定秒数的函数
无效等待(双秒){
时钟启动=时钟();
while(双倍((clock()-start)/时钟每秒)<秒){
//继续循环,直到秒数过去
}
}
您可以使用或(C++11
)来完成任务(在
中)。
包括时间的
int main()
{
using namespace std::this_thread;
using namespace std::chrono;
vector<int> v { 1,2,3,4,5 };
for (const auto& i : v) {
cout << i << '\n';
sleep_for(seconds(1));
// or sleep_until(system_clock::now() + seconds(1));
}
}
您使用的是什么平台?您可以使用操作系统获取时间由于for循环和printf
实际需要时间,这将随时间推移而漂移。当然。但这取决于您希望漂移的程度-可能可以接受0.01%的漂移。但如果不是,则使用getTickCount并减少剩余时间。简单的数学-不是吗?结束=GetTickCount();if(end-start>1000)printf(“时间已过。返回”);首先,最好是正确的,因为这是一个简单的数学问题。你问我你不了解API的工作原理-我给你添加了一个示例应用程序。如果不完全了解你想做什么,函数本身就无法编写。在我的示例printf执行中,也可能需要internity—例如,如果我选择某个对象在控制台窗口中-然后执行该函数是不可接受的,然后您需要使用多线程。所以实现取决于您想要实现什么。请参阅下面我的评论
int main()
{
using namespace std::this_thread;
using namespace std::chrono;
vector<int> v { 1,2,3,4,5 };
for (const auto& i : v) {
cout << i << '\n';
sleep_for(seconds(1));
// or sleep_until(system_clock::now() + seconds(1));
}
}
sleep_for(1s);