qq_38423382
qq_38423382
采纳率97.3%
2017-06-01 08:42

c++程序在输入倒计时的时间内,输入数据的问题。

8

我在用visual studio编写一个c++控制台应用程序。程序当中的一段是我想让在十秒钟之内输入一个值,如果超过十秒钟用户没有输入就按照默认值运行。
我不知道怎么写,给我一个样本或者一个思路也行。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • fight_in_dl 战在春秋 4年前

    代码如下:

    #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秒,少一点时间能加快测试速度。

    用心回答每个问题,如果有帮助,请采纳答案好吗,谢谢~~~

    点赞 1 评论 复制链接分享
  • what951006 小乌龟在大乌龟背上 4年前

    在console开一个定时器,处理console定时器可以自行百度,在要执行的地方放上SetTimer(NULL, 0, 1000, NULL);,

    点赞 评论 复制链接分享
  • shen_wei shen_wei 4年前
    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; 
    } 
    
    点赞 评论 复制链接分享