//: C04:TokenIteratorTest.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt #include "TokenIterator.h" #include "../require.h" #include #include #include #include #include using namespace std; int main() { ifstream in("TokenIteratorTest.cpp"); assure(in, "TokenIteratorTest.cpp"); ostream_iterator out(cout, "\n"); typedef istreambuf_iterator IsbIt; IsbIt begin(in), isbEnd; Delimiters delimiters(" \t\n~;()\"<>:{}[]+-=&*#.,/\\"); TokenIterator wordIter(begin, isbEnd, delimiters), end; vector wordlist; copy(wordIter, end, back_inserter(wordlist)); // Output results: copy(wordlist.begin(), wordlist.end(), out); *out++ = "-----------------------------------"; // Use a char array as the source: char* cp = "typedef std::istreambuf_iterator It"; TokenIterator charIter(cp, cp + strlen(cp), delimiters), end2; vector wordlist2; copy(charIter, end2, back_inserter(wordlist2)); copy(wordlist2.begin(), wordlist2.end(), out); *out++ = "-----------------------------------"; // Use a deque as the source: ifstream in2("TokenIteratorTest.cpp"); deque dc; copy(IsbIt(in2), IsbIt(), back_inserter(dc)); TokenIterator::iterator,Delimiters> dcIter(dc.begin(), dc.end(), delimiters), end3; vector wordlist3; copy(dcIter, end3, back_inserter(wordlist3)); copy(wordlist3.begin(), wordlist3.end(), out); *out++ = "-----------------------------------"; // Reproduce the Wordlist.cpp example: ifstream in3("TokenIteratorTest.cpp"); TokenIterator wordIter2(IsbIt(in3), isbEnd, delimiters); set wordlist4; while(wordIter2 != end) wordlist4.insert(*wordIter2++); copy(wordlist4.begin(), wordlist4.end(), out); } ///:~