История изменений
Исправление WatchCat, (текущая версия) :
Пример на 17-х плюсах.
#include <iostream>
#include <sstream>
#include <chrono>
#include <thread>
namespace ch = std::chrono;
namespace th = std::this_thread;
int main(int argc, char *argv[]) {
using namespace std::chrono_literals;
if( argc != 2 ){
std::cerr << argv[0] << " <minutes>" << std::endl;
return 1;
}
std::istringstream ins(argv[1]);
unsigned query, minutes(0);
if( !( ins >> query && ins.eof())){
std::cerr << "Incorrect argument: " << argv[1] << std::endl;
return 1;
}
std::cout << "Start! " << query << std::endl;
auto start = ch::system_clock::now();
while(true){
th::sleep_for(500ms);
auto elapsed = ch::system_clock::now();
auto tm = ch::duration_cast<ch::minutes>(elapsed - start).count();
if( tm != minutes ){
std::cout << "minutes " << tm << std::endl;
minutes = tm;
}
if( minutes >= query ) break;
}
std::cout << "Stop! " << query << std::endl;
return 0;
}
PS Цикл в rust-варианте можно чутка поправить и сделать по аналогии с плюсовым.
Исходная версия WatchCat, :
Пример на 17-х плюсах.
#include <iostream>
#include <sstream>
#include <chrono>
#include <thread>
namespace ch = std::chrono;
namespace th = std::this_thread;
int main(int argc, char *argv[]) {
using namespace std::chrono_literals;
if( argc != 2 ){
std::cerr << argv[0] << " <minutes>" << std::endl;
return 1;
}
std::istringstream ins(argv[1]);
unsigned query, minutes(0);
if( !( ins >> query && ins.eof())){
std::cerr << "Incorrect argument: " << argv[1] << std::endl;
return 1;
}
std::cout << "Start! " << query << std::endl;
auto start = ch::system_clock::now();
while(true){
th::sleep_for(500ms);
auto elapsed = ch::system_clock::now();
auto tm = ch::duration_cast<ch::minutes>(elapsed - start).count();
if( tm != minutes ){
std::cout << "minutes " << tm << std::endl;
minutes = tm;
}
if( minutes >= query ) break;
}
std::cout << "Stop! " << query << std::endl;
return 0;
}