我只找到的regex_iterators
例子被intialised作为regex_iterators可以用于自定义字符串类型吗?
regex_iterator::<string::iterator>
如果我有一个包含字符序列的一类,例如:
class fooString {
private:
deque<bar> data;
// ... other functionality ...
}
凡bar
是一个类或结构是兼容std::to_string
如何使fooString
和bar
与正则表达式兼容,以便我可以拨打
fooString myFoo = ...
regex e(/* some regex notation */);
regex_iterator::<fooString::iterator> regIt(myFoo.begin(), myFoo.end(), e);
......并且能够像对字符串一样遍历它吗?
我尝试了以下实验性功能:
std::deque<int> testDeque { 4, 5, 5, 5, 6, 7 };
std::regex e("5{1,3}");
std::regex_iterator<std::deque<int>::iterator>
regIt(testDeque.begin(), testDeque.end(), e);
并得到编译错误
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\regex(2271): error C2027: use of undefined type 'std::regex_traits<_Elem>'
with
[
_Elem=int
]
所以我不认为双向迭代器就足够了,因为双端队列与遵守,我认为'酒吧'对象需要兼容。但我真的不确定。
根据[此std :: regex_iterator参考](http://en.cppreference.com/w/cpp/regex/regex_iterator),迭代器需要是[双向迭代器](http:// en.cppreference.com/w/cpp/concept/BidirectionalIterator)。所以如果你的迭代器满足双向迭代器的要求,那么你很好。 –
@Someprogrammerdude我认为数据类型Bar也需要满足一些特定的属性,但我不知道它是什么。 – Ian