Source of rotate.cpp


  1: // Filename: ROTATE.CPP
  2: // Purpose:  Reads in the text of one file, shifts all characters 47 positions
  3: //           to the right, and outputs the resulting text to a second file.
  4: //           The shift is actually a circular rotation or "wrap-around".

  6: #include <iostream>
  7: #include <fstream>
  8: #include <string>
  9: using namespace std;

 11: int main(int argc, char* argv[])
 12: {
 13:     if (argc != 3)
 14:     {
 15:         cout << "\nError: Wrong number of parameters. \n"
 16:              << "       Must be exactly two. \n"
 17:              << "\nCommand Usage: "
 18:              << "\nrotate source_file destination_file \n";

 20:         return 1;
 21:     }

 23:     const int SHIFT_VALUE = 47;
 24:     const int HIGHEST_CODE = 125;
 25:     const int BASE_CODE = 31;

 27:     ifstream inFile(argv[1]);
 28:     ofstream outFile(argv[2]);

 30:     string s;
 31:     int overHang;
 32:     int i;

 34:     while(getline(inFile, s))
 35:     {
 36:         for (i = 0; i < s.length(); i++)
 37:         {
 38:             overHang = int(s[i]) + SHIFT_VALUE - HIGHEST_CODE;
 39:             if (overHang > 0)
 40:                 s[i] = char(BASE_CODE + overHang);
 41:             else
 42:                 s[i] = char(int(s[i]) + SHIFT_VALUE);
 43:         }
 44:         outFile << s << endl;
 45:     }
 46:     inFile.close();
 47:     outFile.close();

 49:     return 0;
 50: }