Mega Code Archive

 
Categories / C++ Tutorial / File Stream
 

Use istreambuf_iterator, ostreambuf_iterator, and replace_copy() to filter a file

#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; }