Какова лучшая альтернативная библиотека для gettimeofday () в C ++? - PullRequest
3 голосов
/ 04 февраля 2010

Есть ли более объектно-ориентированная альтернатива использованию gettimeofday () в C ++ в linux? Мне нравится, например, возможность писать код, подобный следующему:

DateTime now = new DateTime;
DateTime duration = new DateTime(2300, DateTime.MILLISECONDS)
DateTime deadline = now + duration;

while(now < deadline){
    DoSomething();
    delete now;
    now = new DateTime()
}

Целью является встроенная система Linux, и в ней нет библиотек Boost, но, возможно, есть что-то, что легко портировать (например, что-то реализованное с заголовочными файлами).

Ответы [ 4 ]

6 голосов
/ 04 февраля 2010

Нет объектно-ориентированного интерфейса для работы со временем и интервалами, который является частью стандартной библиотеки C ++.

Возможно, вы захотите взглянуть на Boost.Date_Time . Boost настолько полезен и хорошо написан, что практически является частью стандартной библиотеки C ++.

2 голосов
/ 05 февраля 2010

Так что повышение портирования не было вариантом для моей цели. Вместо этого я должен был пойти с gettimeofday (). Однако в sys/time.h

есть несколько хороших макросов для работы с временными структурами.
#include <sys/time.h>

void timeradd(struct timeval *a, struct timeval *b,
          struct timeval *res);

void timersub(struct timeval *a, struct timeval *b,
          struct timeval *res);

void timerclear(struct timeval *tvp);

void timerisset(struct timeval *tvp);

void timercmp(struct timeval *a, struct timeval *b, CMP);

Потребовалось некоторое время, чтобы найти их, потому что их не было в справочных страницах на моей машине. Смотрите эту страницу: http://linux.die.net/man/3/timercmp

0 голосов
/ 04 февраля 2010
/usr/include/linux/time.h 

дает структуру: -

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};

в Linux, может быть, вы могли бы использовать его ...

0 голосов
/ 04 февраля 2010

Я думаю, что вы должны хорошо использовать вещи из ctime.

#include <ctime>

time
difftime
mktime

должны выполнять работу очень переносимым способом. cplusplus.com

...