boost 正则表达式格式化程序,如何使用自定义函数

发布于 2024-12-29 03:02:54 字数 527 浏览 0 评论 0原文

那么,在调用 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到底是什么?

Well how do I invoke a custom formatting function when calling boost::regex_replace?

My code is as following:

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

however it shows an error, "could not deduce template argument for __fmt". - Well what IS T actually?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦醒时光 2025-01-05 03:02:54

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

std::string fmt(boost::smatch match)

Unless you need the flexibility of using a template in your fmt function for some reason that isn't obvious here, try this instead:

std::string fmt(boost::smatch match)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文