我正试图摆脱依赖于平台的代码。
此代码获取由掩码格式化的字符串(“%Y-%m-%d%H:%M:%S”),并将其转换为std :: tm结构和std :: time秒。
我想摆脱依赖预处理器的块的需要,因为(imho)必须在这两个平台上以相同的方式来进行标准化处理。 在Windows中不存在strptime,在Linux(g ++ c ++ 11)上std :: get_time不存在(?)。
是否有任何方法可以使此代码跨平台(windows / linux),而无需使用工厂模式或依赖预处理器的块?
KDATETIME& KDATETIME::operator= (const char* k)
{
std::string smask;
smask = (std::string)this->mask;
std::string sk;
sk=k;
tm.tm_isdst=-1;
#ifdef WINDOWS <<---- THIS BLOCK
std::istringstream ss(sk);
ss >> std::get_time(&tm, smask.c_str());
#else
strptime(sk.c_str(), smask.c_str(), &tm);
#endif <<------
this->time = mktime(&tm); // t is now your desired time_t
[...]
}