Use istreambuf_iterator, ostreambuf_iterator, and replace_copy() to filter a file. : istream_iterator « File Stream « C++ Tutorial





#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>

using namespace std;

int main(int argc, char *argv[])
{
  if(argc != 5) {
    cout << "Usage: replace in out oldchar newchar\n";
    return 1;
  }

  ifstream in(argv[1]);
  ofstream out(argv[2]);

  if(!in.is_open()) {
    cout << "Cannot open input file.\n";
    return 1;
  }
  if(!out.is_open()) {
    cout << "Cannot open output file.\n";
    return 1;
  }

  // Create stream iterators.
  istreambuf_iterator<char> in_itr(in);
  ostreambuf_iterator<char> out_itr(out);

  // Copy the file, replacing characters in the process.
  replace_copy(in_itr, istreambuf_iterator<char>(),out_itr, *argv[3], *argv[4]);

  in.close();
  out.close();

  return 0;
}










12.14.istream_iterator
12.14.1.Use istream_iterator
12.14.2.Create istream_iterator for reading int values from cin
12.14.3.Use istream_iterator and ostream_iterator to read from cin and write to cout.
12.14.4.Use istreambuf_iterator, ostreambuf_iterator, and replace_copy() to filter a file.