我一直在寻找一种计算字符串中特定类型子字符串数量的好方法,比方说,我想计算字符串'smstyuismsms'中'sms'的出现次数。我在论坛中找到了答案,有人建议使用regex_iterator。但是,当我按照以下方式尝试时:
strcpy()
它抛出一个错误说
错误:在'('token
>之前缺少模板参数
那么,如果不是这样,那么使用正则表达式模板的正确方法是什么?请提供一些例子。
答案 0 :(得分:2)
通过查看documentation,似乎std :: regex_iterator是存在四个实例的模板:
cregex_iterator regex_iterator<const char*>
wcregex_iterator regex_iterator<const wchar_t*>
sregex_iterator regex_iterator<std::string::const_iterator>
wsregex_iterator regex_iterator<std::wstring::const_iterator>
你应该使用这些。我的意思是,你总是可以自己传递模板参数,但这不必要地冗长。
来自cppreference示例:
auto words_begin = std::sregex_iterator(s.begin(), s.end(), words_regex);
这与std::string
/ std::wstring
非常相似,它们都是std::basic_string
模板的实例化。基本上你的代码相当于使用basic_string而不是传递模板参数而不是直接使用string / wstring。