私はとを扱っていchar
ますwchar_t
。
いくつかの文字列に(ブースト付きの)正規表現を追加するヘルパー文字列クラスを作成していますが、との両方がstring
ありwstring
ます。これで、機能ごとにコードが重複した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マジック?関数ポインター?)を探しています。