#include <string>
    #include <list>
    #include <algorithm>
    #include <fstream>
    #include <iterator>
    #include <iostream>
    using namespace std;
    
    bool isValidLine(string line);
    
    int main(int argc, char * argv[])
    {
        if(argc < 2)
        {
            cout<<"Usage :" << argv[0]<<" FileName"<<endl;
            return 20;
        }
    
    
        ifstream inFile(argv[1],ios::in);
    
        if(!inFile)
        {
            cout<<" can't open "<<argv[1]<<endl;
        }
    
        string temp;
        list<string> validLines;
        while(getline(inFile,temp))
        {
            if(isValidLine(temp))
                validLines.push_back(temp);
        }
    
        inFile.close();
    
        string renamefile(argv[1]);
        renamefile+=".bak";
        rename(argv[1],renamefile.c_str());
    
        ofstream  outFile(argv[1]);
        if(!outFile)
        {
            cout<<"can't open "<<argv[1]<<" for write access"<<endl;
            return 20;
        }
    
        copy(validLines.begin(),validLines.end(),ostream_iterator<string>(outFile,"\n"));
    
    
        return 0;
    }
    
    bool isValidLine(string line)
    {
        string::size_type emptypos;
        emptypos = line.find_first_not_of(" ");
    
        if(emptypos != string::npos)
			line.erase(0,emptypos);
    
        if(line.empty() == true)
            return false;
    
        const string kommentar("//");
        return line.find(kommentar) == string::npos;        // Dann nach // suchen
    }