Hmm ... creí comprender expresiones regulares, y yo pensaba que entendía iteradores, pero de C++ 11 Ejecución de expresiones regulares me ha intrigado ...C++ 11 regex_token_iterator
Una de las áreas que no entiendo: la lectura sobre regex token iterators, me encontré con el siguiente código de ejemplo:
#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"));
...
}
no entiendo cómo el siguiente resultado:
Quick
brown
fox.
está siendo creado por el std :: copy() funcio n arriba. No veo ningún bucle, así que estoy desconcertado por la forma en que se está produciendo la iteración. O dicho de otra manera, ¿cómo se genera más de una línea de salida?
Copia cada uno a la salida. El bucle está dentro de 'copy'. – chris