All pastes #778317 Raw Edit

Miscellany

public cpp v1 · immutable
·published 2007-11-17 14:02 UTC
rendered paste body
#include <iostream>#include <fstream>#include <list>#include <string>using namespace std;struct parameterezes {    string minta;    bool i;    bool v;    bool x;    list<string> filenevek;};string StringToLower(string myString){    const int length = myString.length();    for(int i=0; i!=length; ++i)    {        myString[i] = tolower(myString[i]);    }    return myString;}void feldolgoz(parameterezes &params){    if(params.filenevek.empty())    {        string s;        if(params.i){ params.minta=StringToLower(params.minta); }        while(getline(cin,s))        {            bool egyezes;            string stemp=s;            if(params.i){ s=StringToLower(s); }            if(params.x)            {                egyezes=(s==params.minta);            }            else            {                egyezes=strstr(s.c_str(),params.minta.c_str());            }            if(params.v)            {                egyezes=!egyezes;            }            if(egyezes)            {                cout<<stemp<<endl;            }        }        return;    }    while(!(params.filenevek.empty()))    {        string s;        fstream filestream;        filestream.open(params.filenevek.begin()->c_str());        params.filenevek.pop_front();        while(getline(filestream,s))        {            bool egyezes;            string stemp=s;            if(params.i){ s=StringToLower(s); }            if(params.x)            {                egyezes=(s==params.minta);            }            else            {                egyezes=strstr(s.c_str(),params.minta.c_str());            }            if(params.v)            {                egyezes=!egyezes;            }            if(egyezes)            {                cout<<stemp<<endl;            }        }    }}int main(int argc, char *argv[]){    if(argc<2){        cout<<"Usage: "<<argv[0]<<" [OPTION]... PATTERN [FILE]..."<<endl;        exit(0);    }    parameterezes params;    params.i=false;    params.x=false;    params.v=false;    if(argc>=2)    {        bool mintamegvan=false;        for(int i=1;i<argc;i++)        {            if((argv[i][0]=='-') && !mintamegvan)            {                int j=1;                while(argv[i][j]!='\0')                {                    switch(argv[i][j])                    {                        case 'i':                                params.i=true;                                break;                        case 'v':                                params.v=true;                                break;                        case 'x':                                params.x=true;                                break;                        default:                                cout<<"Hibas parameterezes!"<<endl;                                exit(1);                    }                    j++;                }            }            else            {                if(!mintamegvan)                {                    mintamegvan=true;                    params.minta=argv[i];                }                else                {                    params.filenevek.push_back(argv[i]);                }            }        }    }    feldolgoz(params);    return 0;}