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" 来提前结束倒计时。这里只是一个简单的例子,实际应用中可能需要更加复杂的输入处理和线程管理。