БлогNot. Задержка времени выполнения в консоли С++

Задержка времени выполнения в консоли С++

Такой вот сакраментальный вопрос... то есть, не "пауза до нажатия клавиши", а именно задержка на нужное время.

Конечно, можно использовать Sleep (milliseconds) на платформе Windows или usleep (microseconds) на unix-платформах, но как-то безблагодатно и не кроссплатформенно.

Нестандартных функций вроде delay из библиотеки dos.h тем более не надо.

Можно, конечно, поизвращаться с циклом на функциях библиотеки ctime, но нормальное решение, пожалуй, возможно только на платформе C++11, вот пример, проверенный в консоли Visual Studio 2015:

#include <iostream>
//Поключить 2 библиотеки:
#include <chrono>
#include <thread>
using namespace std;
//И эти 2 пространства имён:
using namespace std::this_thread;
using namespace std::chrono;

int main() {
 cout << "Pause 1 sec...";
 sleep_for(milliseconds(1000));
 cout << " OK, press Enter to exit";

 cin.get(); return 0;
}

На основе библиотеки ctime код может быть в простейшем случае таким:

#include <iostream>
#include <ctime>
using namespace std;

void mypause(unsigned int delay) {
 time_t start, end; 
 double d;
 start = time(0);
 while (1) {
  end = time(0);
  d = difftime(end, start);
  if (d >= delay) break;
 }
}

int main() {
 cout << "Pause 1 sec...";
 mypause (1); //Стандартные функции работают с секундами!
 cout << " OK, press Enter to exit";

 cin.get(); return 0;
}

05.05.2019, 15:21 [2880 просмотров]


теги: c++ программирование время

К этой статье пока нет комментариев, Ваш будет первым