c++ - 提取日期字符串并确定哪个更早

标签 c++ regex boost boost-date-time

我正在做一个简单的 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++;
}

存储和比较结果的最佳方式是什么? (判断哪个日期早)

最佳答案

最好的方法是构造和比较日期而不是字符串或数字:

#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

关于c++ - 提取日期字符串并确定哪个更早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906720/

相关文章:

c++ - 从指向子变量的指针转换为指向父变量的指针是否安全?

php - 如果旁边有 '-',正则表达式只会添加 4 个数字

java - 用于验证多个数字范围的正则表达式

c++ - 将编译器标志传递给需要编译的 boost 库(例如 Thread)

c++ - 比较存储为 boost::function 的函数指针

C++ 用另一个 vector 填充一个 vector

c++ - 模板 + Typedef C++

python - 正则表达式分割字符串,不包括可转义引号之间的分隔符

C++:奇怪的 std::cout 错误

c++ - 用于多个窗口的 win32 程序