我编写了一个跨平台代码,给出了当前日期(mm/dd/yy)和时间(hh/mm/ss)和完整日期(yyyymmdd),此代码在Windows(MSVS2015)中工作,但在Linux(GCC)中不起作用4.8.5)。
\n\n我的代码是
\n\n#include <iostream> \n#ifdef WIN32\n#include <windows.h>\n#else\n#include <cerrno>\n#endif\n\n#ifdef WIN32\n#include <direct.h>\n#include <io.h>\n#else\n#include <dirent.h>\n#include <stdio.h>\n#include <unistd.h>\n#endif\n#include <ctime>\n#include <bitset>\n#include <cstdlib> /*atol*/\n#include <iomanip>\n#include <stdexcept>\n#include <cstring>\n#include <cstdio>\n#include <fstream>\nusing namespace std;\n\ntemplate <size_t size>\nvoid GetNowDateTime(char(&c_date)[size], char(&c_time)[size])\n{\n time_t t;\n struct tm now;\n strcpy_s(c_date, "00/00/00");\n strcpy_s(c_time, "00:00:00");\n time(&t);\n if (localtime_s(&now, &t) != 0) return;\n char temp[3];\n sprintf_s(temp, "%.2d", now.tm_mon + 1);\n memcpy(c_date, temp, 2);\n sprintf_s(temp, "%.2d", now.tm_mday);\n memcpy(c_date + 3, temp, 2);\n sprintf_s(temp, "%.2d", now.tm_year - 100);\n memcpy(c_date + 6, temp, 2);\n sprintf_s(temp, "%.2d", now.tm_hour);\n memcpy(c_time, temp, …Run Code Online (Sandbox Code Playgroud)