【发布时间】:2014-07-01 22:08:46
【问题描述】:
通过this question 的回答,我能够创建一个函数,该函数使用正则表达式来查找和替换同时适用于 char 和 wchar_t 的字符串
template<typename CharT>
basic_string<CharT> replaceString(const CharT* find, const CharT* str, const CharT* repl)
{
basic_string<CharT> text(str);
basic_regex<CharT> reg(find);
return regex_replace(text, reg, repl);
}
我一直在尝试使用我的函数来实现相同的目的,以计算匹配的数量,但我无法弄清楚。目前我能做到的唯一方法是重载,但我想编写一个可以处理它的函数。
int countMatches(const char* find, const char* str)
{
string text(str);
regex reg(find);
ptrdiff_t cnt = (distance(sregex_iterator(text.begin(), text.end(), reg), sregex_iterator()));
return (int) cnt;
}
int countMatches(const wchar_t* find, const wchar_t* str)
{
wstring text(str);
wregex reg(find);
ptrdiff_t cnt = (distance(wsregex_iterator(text.begin(), text.end(), reg), wsregex_iterator()));
return (int) cnt;
}
【问题讨论】: