在c ++中暂停程序执行5秒

cha*_*tte 5 c++

我想暂停执行c ++程序5秒钟.在Android Handler.postDelayed具有我想要的功能.有没有类似于c ++的东西?

con*_*ref 21

#include <iostream>
#include <chrono>
#include <thread>

int main()
{
    std::cout << "Hello waiter" << std::endl;
    std::chrono::seconds dura( 5);
    std::this_thread::sleep_for( dura );
    std::cout << "Waited 5s\n";
}
Run Code Online (Sandbox Code Playgroud)

this_thread::sleep_for 阻止当前线程的执行至少指定sleep_duration.

  • 问题是标记为C++而不是C (7认同)
  • @ user1595178和`sleep()`是*不是*标准C. (7认同)

pet*_*ica 5

您可以在纯 C 级别执行此操作,因为 C api 调用也可从 C++ 使用。如果您实际的 C++ 库不包含所需的std:chronostd::this_thread(它们略有不同)。

大多数操作系统的 C api 包含一些类似于睡眠的功能,尽管它也可以不同。例如,在 posixen 上,sleep()标准 C 库中有API 调用,您也可以在 C++ 中使用它:

#include <unistd.h>

int main() {
   sleep(5);
   return;
}
Run Code Online (Sandbox Code Playgroud)

或者你可以使用usleep()你想要更好的精度作为秒。usleep()可以休眠微秒精度。

在 Windows 上,您可以使用Sleep(int usec)带有大 ' S' 并使用毫秒的调用。

  • 这是**不是**标准的 C。[“在 C 和 C++ 编程语言中,unistd.h 是提供对 POSIX 操作系统 API 的访问的头文件的名称。”](http://en.wikipedia .org/wiki/Unistd.h) 等效的标准 C 函数是 [`thrd_sleep`](http://en.cppreference.com/w/c/thread/thrd_sleep) (4认同)
  • 我认为 sleep 是 POSIX 调用,而不是 C 库的一部分。Win32 有睡眠(大写 S),但它需要毫秒。 (3认同)