将源代码从窗口转换为linux

时间:2011-01-07 05:07:16

标签: c++

c++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5

我正在将一些源代码从windows转换为在ubuntu上运行。

但是,Windows正在使用以下代码记录消息并获取记录消息的当前时间。但是,这是Windows。将此转换为在linux上运行的最佳方法是什么?

struct  _timeb timebuffer;
char    *timeline;

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

非常感谢任何建议,

3 个答案:

答案 0 :(得分:3)

在linux中使用了类似的函数ftime,它为你提供了时间

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

这将为您提供秒和毫秒的时间。

答案 1 :(得分:0)

Windows代码正在调用ctime,它也可以在Linux上使用,并准备一个日期时间字符串,例如:

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

Linux文档上ctime()的手册页:

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

所以,你不想在linux上使用ftime() ...填充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...

答案 2 :(得分:0)

使用Boost库(日期时间),因为您的问题更多地是关于日期/时间。大多数boost lib都是可移植的。如果你寻找GUI库,QT是最好的,它是便携式的b / w windows / * nix。