2

那么在调用 boost::regex_replace 时如何调用自定义格式化函数?

我的代码如下:

template <typename T>
std::string fmt(boost::match_results<T> match) {
    auto str = match[1];
    if (str == ".") {
        return "\".\"";
    } else {
        return str;
    }
}
void __ConvertEscapeChar(std::string& action, std::string regex) {
    boost::regex re(regex);
    action = boost::regex_replace(action, re, &fmt, boost::regex_constants::match_all);
}

但是它显示一个错误,“无法推断 __fmt 的模板参数”。- 那么 T 实际上是什么?

4

1 回答 1

0

除非您fmt出于某种原因在函数中使用模板的灵活性在此并不明显,否则请尝试以下操作:

std::string fmt(boost::smatch match)
于 2012-08-23T20:41:07.143 回答