gpt4 book ai didi

c++ - 模板 char/wchar_t、string/wstring、cout/wcout、regexp/wregex(或任何可能的解决方法)

转载 作者:行者123 更新时间:2023-11-30 04:23:29 34 4
gpt4 key购买 nike

我正在处理 charwchar_t

我正在编写一个帮助器字符串类,该类将一些正则表达式(带提升)放在一些字符串上,但我同时拥有 stringwstring。现在我有 2 个函数,每个函数都有重复的代码。

int countFoo(const char *s, const char *foo) {
string text(s);

boost::regex e(foo);

int count = 0;
boost::smatch match;
while ( boost::regex_search( text, match, e ) ) {
text = match.suffix();
count++;
}
return count;
}
int countFoo(const wchar_t *s, const wchar_t *foo) {
wstring text(s);

boost::wregex e(foo);

int count = 0;
boost::wsmatch match;
while ( boost::regex_search( text, match, e ) ) {
text = match.suffix();
count++;
}
return count;
}

它有效,但我正在寻找一些优雅的方法(模板?一些 oop 魔法?函数指针?)来删除重复的代码。

最佳答案

你可以把它写成这样的模板:

template <typename charT>
int countFoo(const charT *s, const charT *foo) {
basic_string<char> text(s);

boost::basic_regex<charT> e(foo);

int count = 0;
boost::match_results<typename basic_string<charT>::const_iterator> match;
while ( boost::regex_search( text, match, e ) ) {
text = match.suffix();
count++;
}
return count;
}

关于c++ - 模板 char/wchar_t、string/wstring、cout/wcout、regexp/wregex(或任何可能的解决方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326075/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com