T
Ttodir
Consider the following program:
#include <iostream>
#include <iterator>
#include <string>
#include <set>
#include <algorithm>
using namespace std;
typedef string T; // to simplify, always consider T as string
template<typename input_iterator>
void do_something(const input_iterator& first, const input_iterator&
last) {
const ostream_iterator<T> os(cout, "\n");
const set<T> words(first, last);
copy(words.begin(), words.end(), os);
}
int main(int argc, char** argv) {
const istream_iterator<T> is(cin), eof;
do_something(is, eof);
return 0;
}
The program extracts all the words from an istream (cin) and does
something with them. Each word is seperated by a white space by
default. The logic behind the formatted extraction is inside the
istream_iterator.
What I need to do now is to pass to do_something() two iterators so
that the extracted words will be separated by a punctuation character
instead of a white space (white spaces will be considered as "normal"
characters). How would you do that in a "clean C++ way" (that is, with
the minimum effort)?
#include <iostream>
#include <iterator>
#include <string>
#include <set>
#include <algorithm>
using namespace std;
typedef string T; // to simplify, always consider T as string
template<typename input_iterator>
void do_something(const input_iterator& first, const input_iterator&
last) {
const ostream_iterator<T> os(cout, "\n");
const set<T> words(first, last);
copy(words.begin(), words.end(), os);
}
int main(int argc, char** argv) {
const istream_iterator<T> is(cin), eof;
do_something(is, eof);
return 0;
}
The program extracts all the words from an istream (cin) and does
something with them. Each word is seperated by a white space by
default. The logic behind the formatted extraction is inside the
istream_iterator.
What I need to do now is to pass to do_something() two iterators so
that the extracted words will be separated by a punctuation character
instead of a white space (white spaces will be considered as "normal"
characters). How would you do that in a "clean C++ way" (that is, with
the minimum effort)?