boost 正则表达式格式化程序,如何使用自定义函数
那么,在调用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
除非您出于某种此处不明显的原因需要在
fmt
函数中灵活地使用模板,否则请尝试以下操作:Unless you need the flexibility of using a template in your
fmt
function for some reason that isn't obvious here, try this instead: