我在用visual studio编写一个c++控制台应用程序。程序当中的一段是我想让在十秒钟之内输入一个值,如果超过十秒钟用户没有输入就按照默认值运行。
我不知道怎么写,给我一个样本或者一个思路也行。
代码如下:
#include <iostream>
#include <thread>
#include <chrono>
int getVal(int defaultValue)
{
int val = 0;
std::thread t1([&]() {
std::cin >> val;
if (val != 0)
{
printf("get value:%d\n", val);
exit(0);
}
});
std::this_thread::sleep_for(std::chrono::seconds(5));
t1.detach();
if (val == 0)
val = defaultValue;
return val;
}
int main()
{
std::cout << "请在限定时间内输入,否则将使用默认值123\n";
std::cout << "限定时间没有输入,采用默认值:" << getVal(123) <<std::endl;
}
具体使用你可以根据自己的情况摘取关键代码。
提示:测试时不用10秒,少一点时间能加快测试速度。
用心回答每个问题,如果有帮助,请采纳答案好吗,谢谢~~~
int nSec = 10;
DWORD WINAPI TimeCount(LPVOID lpParam)
{
while(nSec > 0)
{
-- nSec;
Sleep(1000);
}
printf("Time Over!\n");
exit(1);
}
int main()
{
int nResult = 0;
HANDLE hThread;
DWORD dwThreadID;
printf("4 + 4 = ");
hThread = ::CreateThread(NULL,NULL,TimeCount,NULL,0,&dwThreadID);
while(1)
{
scanf("%d",&nResult);
if(nResult == 8)
{
printf("YES\n");
exit(1);
}
else
{
printf("NO Time %d \n",nSec);
}
}
::CloseHandle(hThread);
return 0;
}
在console开一个定时器,处理console定时器可以自行百度,在要执行的地方放上SetTimer(NULL, 0, 1000, NULL);,