Я делаю проблему на сайте. Мой код следующий:
string timeConversion(string s) {
std::tm t = {};
string result = "";
std::istringstream ss(s);
ss >> std::get_time(&t, "%I:%M:%S%p");
if (ss.fail()) {
std::ostringstream oss;
oss << std::put_time(&t, "%H:%M:%S") << endl;
result = oss.str();
} else {
result = "Parse failed";
}
return result;
}
Когда я ввожу 07: 05: 45 PM, он возвращает 07: 05: 45 . Но я ожидаю 19: 05: 45 . Что не так?
UPDATE
Код неверен для оператора if. Это должно быть
string timeConversion(string s) {
std::tm t = {};
string result = "";
std::istringstream ss(s);
ss >> std::get_time(&t, "%I:%M:%S%p");
if (ss.fail()) {
result = "Parse failed";
} else {
std::ostringstream oss;
oss << std::put_time(&t, "%H:%M:%S") << endl;
result = oss.str();
}
return result;
}
Код возвращает «Ошибка разбора» для «07:05:45 PM» (g ++ 5.4.0) Это тоже неожиданно.