嗯……我以为我理解正则表达式,我以为我理解迭代器,但是 C++11 的正则表达式实现让我感到困惑……
我不明白的一个领域:阅读regex token iterators时,我遇到了以下示例代码:
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <regex>
int main()
{
std::string text = "Quick brown fox.";
// tokenization (non-matched fragments)
// Note that regex is matched only two times: when the third value is obtained
// the iterator is a suffix iterator.
std::regex ws_re("\\s+"); // whitespace
std::copy( std::sregex_token_iterator(text.begin(), text.end(), ws_re, -1),
std::sregex_token_iterator(),
std::ostream_iterator<std::string>(std::cout, "\n"));
...
}
我不明白以下输出如何:
Quick
brown
fox.
由上面的 std::copy() 函数创建。我看不到循环,所以我对迭代是如何发生的感到困惑。或者换一种说法,多行输出是如何产生的?