Как проверить входную строку в коротком формате времени

У меня есть строка ввода, которая должна представлять 24 часа. Допустимые входные данные — это строки типа:

7:04
07: 4
7: 4
7:04

И неверная строка ввода будет, очевидно, что-то вроде 25:68, Есть ли простой способ утверждать формат времени, а затем разбор время в формате эпохи, учитывая, что время сегодня? Есть ли какая-нибудь библиотека повышения, которая пригодится здесь?

1

Решение

Вы можете сделать это, используя strptime, который является стандартным для Unix-подобных систем:
http://www.kernel.org/doc/man-pages/online/pages/man3/strptime.3.html

2

Другие решения

Я вижу два варианта:

  1. Простое регулярное выражение или boost :: xpressive (мне это нравится больше).

  2. Получить числа между точкой с запятой и преобразовать их в числа, а затем проверить их значения. Что-то вроде этого:

    string sTime("53:30");
    int iSemiColon = sTime.find(':');
    if (atoi(sTime.substr(0, iSemiColon).c_str()) >= 24) return false;
    if (atoi(sTime.substr(iSemiColon + 1).c_str()) >= 60) return false;
    
2

Увидеть этот ответ. Если вы не ограничены STL, вы можете использовать boost.Regex для проверки, хотя это такая простая проблема, что вы можете легко найти собственное решение.

1
По вопросам рекламы [email protected]