2011-01-07 3 views
1
c++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 

Я преобразовываю некоторый исходный код из окон в работу на ubuntu.преобразование исходного кода из окна в linux

Однако окна используют код ниже для регистрации сообщений и получения текущего времени, когда сообщение регистрируется. Однако это окна. Каков наилучший способ конвертировать это в linux?

struct _timeb timebuffer; 
char *timeline; 

_ftime(&timebuffer); 
timeline = ctime(&(timebuffer.time)); 

Большое спасибо за любые советы,

+0

проверить сначала замену '_ftime' на' ftime', включить time.h и sys/time.h – 9dan

ответ

3

в Linux подобная функция ftime используется, который дает вам время сделать

#include <sys/timeb.h> 
/* .... */ 
struct timeb tp; 
ftime(&tp); 
printf("time = %ld.%d\n",tp.time,tp.millitm); 

это даст вам время на втором и миллисекундах.

0

Код окна звонит ctime, которая доступна на Linux тоже и подготавливает даты и времени строки, такие как:

"Wed Jun 30 21:49:08 1993\n" 

Человек страница ctime() по документам Linux:

char *ctime(const time_t *timep); 
char *ctime_r(const time_t *timep, char *buf); 

Таким образом, вы не хотите использовать ftime() на linux ..., который заполняет буфер struct timeb, который не принимается ctime().

Вместо этого, вы можете получить/использовать значение time_t с помощью функции time() как в:

#include <time.h> 
time_t my_time_t; 
time(&my_time_t); 
if (my_time_t == -1) 
    // error... 
char buffer[26]; // yes - a magic number - see the man page 
if (ctime_r(&my_time_t, buffer) == NULL) 
    // error... 
// textual representation of current date/time in buffer... 
0

пользоваться усилением библиотек (DateTime) как вопросы выглядят более о дате/времени. Большая часть расширения lib является портативной. Если вы ищете библиотеки GUI, то QT является лучшим, который снова переносит b/w windows/* nix.

Смежные вопросы