我正在尝试在Visual Studio中创建一个倒数计时器。
我已经尝试过使用“延迟”功能,就好像我正在编写Arduino程序一样,但是错误列表显示这是一个无法识别的功能。
答案 0 :(得分:1)
std::this_thread::sleep_for
是等效的标准。它将在指定的时间内暂停当前线程。
例如,这将打印“ Before”,等待一秒钟,然后打印“ After”:
@inferred
在事件驱动的上下文(例如GUI线程)中谨慎使用此功能,因为它可能阻止及时处理事件并导致应用程序挂起或被OS杀死。 GUI工具箱通常提供自己的安全替代方案,使它们能够继续处理事件并避免该问题。
各种平台API也提供了类似的功能。通常,您会遇到Windows Sleep
或POSIX sleep
,usleep
和nanosleep
。出于可移植性考虑,最好使用标准#include <chrono>
#include <thread>
#include <iostream>
int main() {
std::cout << "Before" << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "After" << std::endl;
}
,但如果由于某种原因(使用C ++ 03或更早版本,没有标准库等)而无法使用平台功能,则可以使用平台功能。
答案 1 :(得分:1)
这取决于您的C ++标准。
如果您的代码针对的是C ++ 11或更高版本(现在您确实应该这样做),则可以使用std::this_thread::sleep_for
中的<thread>
。
如果没有,则没有可移植的方法,您应该使用平台相关的功能。