Using istreambuf_iterator, ostreambuf_iterator, and replace_copy() to filter a file. - C++ STL Algorithm

C++ examples for STL Algorithm:replace_copy

Description

Using istreambuf_iterator, ostreambuf_iterator, and replace_copy() to filter a file.

Demo Code

#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;/* w  w  w .jav  a  2s . c o  m*/
   }
   ifstream in(argv[1]);
   ofstream out(argv[2]);
   // Make sure files opened successfully.
   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;
}

Related Tutorials