Gestione file

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Gestione file

    Di nuovo: dov'è che scrivi davvero sul file? Qual è la riga in cui dici "scrivi il nome"? Come vedi non c'è... e la devi aggiungere, altrimenti ovviamente non stampi nulla!
  • Re: Gestione file

    Mi spiace ma sono un po' dura nel capire sta cosa! non so proprio come fare!
  • Re: Gestione file

    Ok, io ci ho provato...
    
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sstream>
    
    using namespace std;
    
    /*
     * Funzione che prende in ingresso una riga letta dal file
     * e restituisce il nome del cliente, cioe' tutto quello
     * che sta prima della virgola
     */
    string get_nome_cliente(string riga_file) {
    	return riga_file.substr(0, riga_file.find(","));
    }
    
    /* 
     * Funzione che prende in ingresso una riga letta dal file
     * e restituisce il codice del viaggio, cioe' tutto quello
     * che sta dopo la virgola, convertito in un intero
     */
    int get_codice_viaggio(string riga_file) {
    	int codice;
    	int pos_virgola = riga_file.find(",");
    	int lungh = riga_file.length();
    	string stringa_codice = riga_file.substr(pos_virgola+2, lungh - pos_virgola);
    	istringstream (stringa_codice) >> codice;
    	return codice;
    }
    
    
    int main(int argc, char const *argv[])
    {
    	fstream my_file;
    
    	// apro il file in lettura
    	my_file.open("clienti.txt", fstream::in);
    	string line;
    	string nome_inserito;
    
    	cout << "Inserire il nome del cliente: ";
    	getline(cin, nome_inserito);
    	cout << "Nome inserito: " << nome_inserito << endl;
    
    	bool cliente_nella_lista = false;
    
    	while(getline(my_file, line)) {
    		//cout << "Nome trovato: " << get_nome_cliente(line) << endl;
    		//cout << "Codice viaggio: " << get_codice_viaggio(line) << endl;
    		string nome_trovato = get_nome_cliente(line);
    		if (nome_inserito == nome_trovato) {
    			cout << "IL CLIENTE E' NELLA LISTA!" << endl;
    			cliente_nella_lista = true;
    		}
    	}
    
    	if(!cliente_nella_lista) {
    		my_file.close();
    
    		// apro il file in scrittura (con append)
    		my_file.open("clienti.txt", fstream::out | fstream::app);
    
    		cout << "Il cliente non e' nella lista: lo aggiungo" << endl;
    
    		// TODO Io scrivo solo il nome, poi se mai lo modifichi...
    		my_file << nome_inserito << endl;
    		cout << "Fatto" << endl;
    	}
    
    	my_file.close();
    
    	return 0;
    }
    
    Poi mi dici se qualcosa non ti è chiaro.
  • Re: Gestione file

    Non so come ringraziarti!!!
  • Re: Gestione file

    Prego, ma l'importante è che tu l'abbia capito!
Devi accedere o registrarti per scrivere nel forum
19 risposte