【发布时间】:2017-08-31 08:22:48
【问题描述】:
我正在使用 Visual Studio 2015 在 Windows 上执行以下代码。基本上我使用 std::get_time 来解析日期,但是当日期无效时,例如大于 31 的一天,它似乎没有设置流上的失败位。
我已经在 Ubuntu 上使用 g++ 5.4.0 进行了尝试,它设置了失败位并打印“解析失败!”。这是 Windows 上的错误还是我做错了什么。
提前致谢!
std::string date = "2019-2-37 23:00:00"; // day (37) is wrong.
std::string format = "%Y-%m-%d %H:%M:%S";
std::tm tm_object{};
std::istringstream input(date);
input.imbue(std::locale(std::setlocale(LC_ALL, nullptr)));
input >> std::get_time(&tm_object, format.c_str());
if (input.fail())
{
std::cout << "Parsing failed!";
}
else
{
std::cout << "Parsing ok!\n";
std::cout << "Day is : " << tm_object.tm_mday;
}
【问题讨论】:
标签: c++ c++11 visual-c++ visual-studio-2015 std