Извлечение строк дат и определение того, что раньше

Я работаю над простым проектом НЛП, который дает строку, различные параметры будут определены.

Учитывая следующий вход:

07122012 12102012

Код:

string REGEX_DATE = "((\\d{2})/(\\d{2})/(\\d{4}))";

regex expressionFormat(REGEX_DATE);

sregex_token_iterator i(input.begin(), input.end(), expressionFormat, 1);

sregex_token_iterator j;

while(i != j)
{
result = *i++;
}

Как лучше всего хранить и сравнивать результаты? (Определите, какая дата раньше)

1

Решение

Лучшим способом было бы построить и сравнить даты, а не строки или числа:

#include <iostream>
#include <string>
#include <boost/date_time.hpp>

int main()
{
std::string input = "07122012 12102012";

std::istringstream buf(input);
buf.imbue(std::locale(buf.getloc(),
new boost::posix_time::time_input_facet("%d%m%Y")));

boost::posix_time::ptime d1, d2;
buf >> d1 >> d2;

if(d1 < d2)
std::cout << d1 << " before " << d2 << '\n';
else
std::cout << d2 << " before " << d1 << '\n';
}

онлайн демо: http://liveworkspace.org/code/989ba879e622aed7866e7dba2d0f02ee

1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector