Ricercare una parola in un file di testo

di il
6 risposte

Ricercare una parola in un file di testo

Salve, come da titolo, sto facendo un progettino per la scuola che prevede la gestione di una piccola "libreria": il programma crea un file di testo in cui va a scrivere titolo e editore di libri/giornaletti inventati..Ora il prossimo passo è quello di ricercare all'interno di questo file di testo il nome dei libri tramite una parola chiave..Avevo pensato a una comparazione tra due vettori di caratteri (uno contenente la nostra parola, e l'altro una riga del file di test), oppure compararli come stringhe, ma non ho approfondito bene quest'ultime.

Esempio file di testo:
Ciao_Ciao di Luigi
Cappuccetto_Rosso di tizio
....
....

Esenpio ricerca: Se la parola chiave è 'c' ad esempio, il risultato dovrà essere ik seguente:
Ciao_Ciao di...
Capuccetto_Rosso di...

Come mi consigliate di procedere?
Uso la libreria fstream per la gestione del file.
Il programma lavora con oggetti, classi etc..

6 Risposte

  • Re: Ricercare una parola in un file di testo

    Potresti utilizzare il metodo find delle stringhe: http://www.cplusplus.com/reference/string/string/find
  • Re: Ricercare una parola in un file di testo

    jfet ha scritto:


    Potresti utilizzare il metodo find delle stringhe: http://www.cplusplus.com/reference/string/string/find
    Si so di questo metodo però il problema è che dovrei memorizzare ogni riga del file di testo in un vettore di stringhe e cercare la parola chiave in tutte queste stringhe, questo è il vero problema..e davvero non riesco ad arrivarci
  • Re: Ricercare una parola in un file di testo

    No ... devi leggere linea dopo linea e cercare in quella corrente che avrai in memoria.
  • Re: Ricercare una parola in un file di testo

    oregon ha scritto:


    No ... devi leggere linea dopo linea e cercare in quella corrente che avrai in memoria.
    E come faccio? La stringa può assumere una sola parola alla volta, non riesco a farle prendere tutta la riga dal file di testo..
    Esempio:
    Se io ho questo, parola sarà appunto la prima parola del file libreria.txt, non tutta la frase, perchè si comportano così le stringhe?
    int main(){
    	
    	ifstream in("libreria.txt", ios::in);
    	
    	string parola;
    	
    	in >> parola;
    	
    	cout << parola << endl;
    	
    	in.close();
    	
    	return 0;
    }
    
  • Re: Ricercare una parola in un file di testo

    Usa le getline

    http://www.cplusplus.com/reference/string/string/getline/
  • Re: Ricercare una parola in un file di testo

    
    void Ricerca(){	
      string v[MAX];		
      string ricerca;
      int i = 0;
      
      cout<<"Cosa vuoi cercare? : ";
      getline(cin, ricerca);
      
      ifstream fin ("libreria.txt");
      
      while(! fin.eof()){
      	i++;
        getline(fin, v[i]);
        size_t found; //flag
        found = v[i].find(ricerca);
        
        if(found != string::npos){
        	cout<<v[i]<<endl;
    		}
        }
        fin.close();
    }
    
    Date uno sguardo a questo codice..Allora il getline dal file funziona, e ogni riga viene salvata all'interno di un vettore di stringhe che scorre e in cui faremo la ricerca della string "ricerca" appunto, ma c'è un problema, appena eseguo il programma e provo a richiamare la ricerca, mi scrive da solo il campo "cosa vuoi cercare?", prende delle stringhe a caso(inserite in altre occasioni da me in altre parti) e fa tutto lui, come mai?
Devi accedere o registrarti per scrivere nel forum
6 risposte