dotFusion.net

Source code numberings remover 0.2

Posted on: June 10th, 2010.
Category: C++

Didn’t write for a long time. Just a quick post to add the new version of my Source code numberings remover…

#ifndef __linux__
       #include <conio.h>
#else
       #include "getch.h"
#endif
 
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <cstring>
 
using namespace std;
 
    void RemStartingChars(string &input, bool spacesRemoved)
    {
         if (!spacesRemoved)
               while (input[0] == ' ')
                    input = input.substr( 1, strlen(input.c_str()) );
 
         char numbers[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
         int i = -1;
         bool hasMore = false, tmp = false;
 
         while (numbers[++i])
               while(tmp = (input[0] == numbers[i]))
               {
                     hasMore = hasMore || tmp;
                     input = input.substr( 1, strlen(input.c_str()) );
               }
 
         if (hasMore)
            RemStartingChars(input, true);
    }
 
    int main(int argc, char *argv[])
    {
		cout<<"Source code numberings remover 0.2"<<endl;
		cout<<"Written by Iskren Slavov"<<endl;
		cout<<"Copyright (C) 2009,2010"<<endl;
 
		cout<<"\nThis computer software must be ";
		cout<<"redistributed and edited under the terms of GNU GPLv2. ";
		cout<<"For more information about licensing read COPYING file.\n\n";
 
 
        if (argc > 1)
        {
                 ifstream inFile;
                 ofstream outFile;
 
                 inFile.open(argv[1]);
                 outFile.open(argv[2]);
 
                 if (!inFile)
                 {
                    cerr<<"Unable to open file: "<<argv[1]<<endl;
                    system("PAUSE");
                    exit(1);
                 }
 
                 string input;
                 cout<<"=========================\nConverting... ";
                 while (getline(inFile, input))
                 {
                       RemStartingChars(input, false);
                       outFile<<input<<endl;
                 }
                 cout<<"All done!\n========================="<<endl;
 
                 outFile.flush();
                 outFile.close();
                 inFile.close();
        }
		else
		{
			#ifdef __linux__
            			char * progname = argv[0];
			#else
						char * progname = strrchr(argv[0], '\\')+1;
			#endif
            cout<<"================================================================"<<endl;
            cout<<"Description: Removes leading numbers from source code."<<endl;
            cout<<"Usage: "<<progname<<" <input-file.txt> <output-file.txt>"<<endl;
            cout<<"================================================================"<<endl;
      		cout<<"Press any key to exit . . ."<<endl;
 
      		#ifdef __linux__
            	getchar();
            #else
            	getch();
            #endif
		}
        return 0;
    }

Source code numberings remover 0.2