string iterators incompatible

I am compiling the following code with VS2013:

   if (std::regex_match(string("10-11-1982 11:22:31"), match, std::regex("(\\d{2}-\\d{2}-\\d{4} \\d{2}:\\d{2}:\\d{2})"))) {
            std::cout << "Match size:" << match.size() << std::endl;
            for (size_t i = 0; i < match.size(); ++i) {
                std::ssub_match sub_match = match[i];
                std::string piece = sub_match.str(); // <-- Interrumption here
                std::cout << "  submatch " << i << ": " << piece << '\n';
            }
        }

When the commented line is executed the following dialog appears:

enter image description here

What is wrong with my code?

share improve this question
 

1 Answer

up vote 1 down vote accepted

You can't use string like that, although the compiler says it's OK.

Just declare your input string as string and then pass the variable to the regex_match method.

This works:

string line1 = "10-11-1982 11:22:31";

if (std::regex_match(line1, match, std::regex("(\\d{2}-\\d{2}-\\d{4} \\d{2}:\\d{2}:\\d{2})"))) {
        std::cout << "Match size:" << match.size() << std::endl;
        for (size_t i = 0; i < match.size(); ++i) {
            std::ssub_match sub_match = match[i];
            std::string piece = sub_match.str(); // <-- Interrumption here
            std::cout << "  submatch " << i << ": " << piece << '\n';
        }
    }

Output:

enter image description here


问题在于 regex_match 的第一个参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值