c++倒计时代码

cpp
#include <iostream> #include <thread> #include <chrono> void countdown(int seconds) { for (int i = seconds; i > 0; --i) { std::cout << "倒计时: " << i << " 秒\n"; std::this_thread::sleep_for(std::chrono::seconds(1)); } std::cout << "时间到!\n"; } int main() { int seconds; std::cout << "请输入倒计时秒数: "; std::cin >> seconds; countdown(seconds); return 0; }

这个程序通过用户输入秒数,然后启动一个倒计时线程,每秒打印一次剩余时间,直到时间为零。

如果你想让倒计时更加交互性,可以使用多线程和异步输入。

cpp
#include <iostream> #include <thread> #include <future> #include <chrono> void countdown(std::future<bool>& programRunning, int seconds) { for (int i = seconds; i > 0; --i) { if (programRunning.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { // 如果程序退出标志被设置,立即退出倒计时 std::cout << "倒计时被中断!\n"; return; } std::cout << "倒计时: " << i << " 秒\n"; std::this_thread::sleep_for(std::chrono::seconds(1)); } std::cout << "时间到!\n"; } int main() { int seconds; std::cout << "请输入倒计时秒数: "; std::cin >> seconds; // 使用 std::promise 和 std::future 来实现异步输入,以便在倒计时中接收用户输入 std::promise<bool> exitSignal; std::future<bool> programRunning = exitSignal.get_future(); // 启动倒计时线程 std::thread countdownThread(countdown, std::ref(programRunning), seconds); // 等待用户输入,如果用户输入 "q",则退出程序 std::string input; std::cout << "输入 'q' 可以提前结束倒计时:\n"; std::cin >> input; if (input == "q") { // 设置退出标志,通知倒计时线程退出 exitSignal.set_value(true); } // 等待倒计时线程结束 countdownThread.join(); return 0; }

这个例子中,countdown 函数使用了 std::future 来接收外部的退出信号。主函数中通过启动一个倒计时线程和等待用户输入的方式,使得用户可以在倒计时进行中输入 "q" 来提前结束倒计时。这里只是一个简单的例子,实际应用中可能需要更加复杂的输入处理和线程管理。