我在Apple Clang上用std :: mktime取得了奇怪的结果。我提取了一个MCV:
#include <sstream>
#include <iomanip>
#include <iostream>
std::time_t test()
{
std::stringstream stream;
stream << "12:30";
struct tm tm = {};
stream >> std::get_time(&tm, "%H:%M");
std::time_t t = std::mktime(&tm);
return t;
}
int main()
{
std::cout << static_cast<long int>(test()) << std::endl;
return 0;
}
这里我正在解析一个包含有效时间的字符串。 std :: get_time()解析时间并将其正确保存到tm对象。
std :: mktime()总是在Apple Clang上返回-1,what indicates an error(但不可能确切地知道哪一个)。 我的铿锵版:
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
我已经在Wandbox上测试了这段代码,它从5.1.0开始正常使用GCC,从3.2开始使用Clang并打印-2209062600。
对我来说看起来像是一个Apple Clang错误。