1

文字列を指定すると、さまざまなパラメーターが決定される単純なNLPプロジェクトに取り組んでいます。

次の入力があるとします。

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++;
}

結果を保存して比較する最良の方法は何ですか? (どちらの日付が早いか判断してください)

4

1 に答える 1

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

于 2012-10-16T02:39:02.197 に答える