Ricerca di testo in un file (C++)

di il
10 risposte

Ricerca di testo in un file (C++)

Sto scrivendo il codice di una "rubrica" in c++ e una delle funzioni è la ricerca di un contatto per nome.

Tenendo conto che sono alle prime armi della programmazione sto avendo serie difficoltà con i file, ma girando su internet sto pian piano ottenendo risposte...

Arrivo al punto: ho trovato un modo per ricercare il testo nel file che però non è compatibile con l'esercizio che sto svolgendo al momento siccome esso prevede che il nome, il cognome e il numero del contatto si trovino sulla stessa riga e siano divisi da un punto e virgola e uno spazio
(es: gianni; rossi; 123; )

ripeto che sono alla base della programmazione e quindi vorrei usare dei metodi quanto più semplici e basilari possibili, se qualcuno fosse in grado di aiutarmi sarei ovviamente disposto a fornire tutte le informazioni necessarie,
grazie in anticipo a chiunque si faccia avanti.

10 Risposte

  • Re: Ricerca di testo in un file (C++)

    Dobbiamo fare noi l'esercizio?
  • Re: Ricerca di testo in un file (C++)

    No, preferirei capirlo. Se vi è più comodo posso passarvi il testo dell'esercizio e/o quello che ho scritto finora
    ah e grazie per la risposta
  • Re: Ricerca di testo in un file (C++)

    Avrei anche bisogno di una delucidazione sulla funzione "getline": a cosa serve e come funziona.
  • Re: Ricerca di testo in un file (C++)

    La getline prende caratteri fino al delimitatore (dato in input), nel tuo caso il punto è virgola. Vedi l'esempio qui (ha usato istringstream come input, ma funziona anche con la ifstream).

    https://en.cppreference.com/w/cpp/string/basic_string/getline

    Sì, posta il codice, o almeno la parte interessata.
  • Re: Ricerca di testo in un file (C++)

    Gliscor ha scritto:


    Avrei anche bisogno di una delucidazione sulla funzione "getline": a cosa serve e come funziona.
    Cosa ti serve sapere oltre quello che c'è scritto nella documentazione online della funzione (oltre che in un qualsiasi libro)? Cosa non capisci in particolare?
  • Re: Ricerca di testo in un file (C++)

    Alexv ha scritto:


    La getline prende caratteri fino al delimitatore (dato in input), nel tuo caso il punto è virgola. Vedi l'esempio qui (ha usato istringstream come input, ma funziona anche con la ifstream).

    https://en.cppreference.com/w/cpp/string/basic_string/getline

    Sì, posta il codice, o almeno la parte interessata.
    Come ve lo mando? Posso copiarlo e incollarlo?
  • Re: Ricerca di testo in un file (C++)

    Gliscor ha scritto:


    Come ve lo mando? Posso copiarlo e incollarlo?

    Sì, ma mettilo nel tag code.
  • Re: Ricerca di testo in un file (C++)

    Alexv ha scritto:


    Gliscor ha scritto:


    Come ve lo mando? Posso copiarlo e incollarlo?

    Sì, ma mettilo nel tag code.
     case 2:
                  {
                    ifstream ricerca;
                    ricerca.open("rubrica.txt");
                    cout << " - - - - - - - - - - - - - - - - - - " << endl;
                    cout<< "HAI DECISO DI CERCARE UN NUMERO" << endl;
                    cout<< " " << endl;
                    cout<<"inserisci il nome del proprietario del numero che intendi cercare"<< endl;
                    cout<< " " << endl;
                    cin>>nomeric;
                    while (!ricerca.eof() )
                    // dichiarazione booleana, eof restituisce il valore "vero" qaundo finisce il file
                    {
                    getline (ricerca, nome);
                    getline (ricerca, cognome);
                    getline (ricerca, numero);
                    if (nome==nomeric)
                        {
                        cout << "nome: " << nome << endl;
                        cout << "cognome: " << cognome << endl;
                        cout << "numero: " << numero << endl;
                        }
                        else
                        {
                        cout << "contatto non trovato" << endl;
                        }
                    }
                    ricerca.close();
                  }
    
                break;
    
  • Re: Ricerca di testo in un file (C++)

    Dato che la linea contiene tutti i dati, la getline deve essere una sola

    getline(ricerca, testo);

    e dopo devi fare una ricerca dentro la variabile testo.
  • Re: Ricerca di testo in un file (C++)

    Può anche fare come ha fatto, ma deve usare il punto è virgola come delimitatore nella getline. In più va rimosso lo spazio all'inizio di ogni campo.
Devi accedere o registrarti per scrivere nel forum
10 risposte