C++ leggere scrivere un file

di il
3 risposte

C++ leggere scrivere un file

Salve,
mi chiedevo se qualcuno sapeva indicarmi qualche guida per la gestione di file col c++; ho già provato su google (ma mi da solo guide di base) e su IProgrammatori.it , ma l'unico link che sembra giusto, firefox non riesce ad arrivarci.
poi volevo anche sapere se qualcuno aveva msn o solo l'e-mail perchè sto cercando persone che possano aiutarmi(magari anche reciprocamente)

grazie per l'attenzione.

3 Risposte

  • Re: C++ leggere scrivere un file

    Ciao! la gestione dei file in c++ è facilissima............
    se ti interessa posso aiutarti per e-mail....
    fammi sapere
  • Re: C++ leggere scrivere un file

    Ciao asd,
    la mia mail è , spero che tu mi contatti al più presto.
    Leonardo
  • Re: C++ leggere scrivere un file

    Per non aprire un nuovo topic mi riaggancio a questo.
    Anche io sto impazzendo dietro alla gestione di file.
    In particolare sto cercando il modo di sostituire una stringa in un file che non ha un formato proprio.
    Sono riuscito a creare uno script che, una volta chiesta la stringa da sostituire e quella in sostituzione (della stessa lunghezza), cerca e trova la riga del file che contiene la prima, estrae questa riga e la aggiorna con la seconda stringa, grazie a replace. Il problema è che non so come "registrare" questo aggiornamento nel file.
    Vi posto il codice che esegue tutto ciò e una parte del file interessato.

    script
    void fileModification(char filename[])
    {
    	// lettura del file
    	cout << "Lettura del file " << filename << " ...";
    	fstream file_op(filename, ios::in|ios::out);
    	cout << "fatto" << endl << endl;
    
    	// dichiaro le variabili stringa1 (da modificare), stringa2(da inserire) e testo (porzione di testo estratta dal file ad ogni iterazione while)
    	string stringa1;
    	string stringa2;
    	char testo[2000];
    	size_t pos = 0;
    	int notfound = 0;
    	
    	// Chiedo di inserire la stringa da modificare
    	cout << "Digitare la stringa da modificare: ";
    	cin >> stringa1;
    	cout << endl;
    
    	// Cerco la stringa1 e la sostituisco con la stringa2
    	while(!file_op.eof())
    	{
    		// estraggo una riga dal file e la metto in testo
    		file_op.getline(testo,2000);
    
    		// converto 'testo' da array di char in tipo string (text) per poter usare i metodi find e replace della classe string
    		string text = testo;
    
    		// dichiaro una variabile size_t per memorizzare la posizione della stringa stringa1 in text
    
    		// cerco stringa1 in text e ottengo la posizione
    		pos = text.find(stringa1,0);
    
    		// se non trovo stringa1 in text dichiaro stringa non trovata
    		if(pos == string::npos)	{	notfound = 1;	}
    		
    		// altrimenti effettuo la sostituzione con stringa2
    		else
    		{
    			// chiedo la stringa da inserire
    			cout << "Digitare la nuova stringa [stessa dimensione della precedente]: ";
    			cin >> stringa2;
    			cout << endl;
    			cout << "Sostituzione di " << stringa1 << " con " << stringa2 << endl;
    
    			// il metodo replace sostituisce il testo in text, compreso tra 'pos' e 'stringa1.length()', con quello di stringa2
    			cout << "Contenuto di text prima: " << text << endl;
    			text.replace(pos,stringa1.length(),stringa2);
    
    			// file_op << text; non funziona!!!
    			
    			cout << "Contenuto di text dopo: " << text << endl;
    			cout << endl;
    			cout << "Stringa sostituita con successo!" << endl;
    			return;
    		}
    	}
    
    	// se la stringa1 non è stata trovata lo dico
    	if(notfound == 1)	{	cout << "Stringa " << stringa1 << " non trovata!" << endl;	}
    
    	file_op.close();  // chiude il file
    
    }
    Pezzo del file:
    PC_BOARD
    IDENTIFIER:='923-0420-03-01';
    DESCRIPTION:='';
    UNIT:=1 INCH;
    WORKING_AREA:=[(0,0),(.03937008,.03937008)];
    TECHNIQUE:=F;
    VERSION
    TL_REVISION:='2.00';
    TL_COMMENT:='TL file generated by AUTOBOARD';
    
    [...]
    
    
    Per farla breve vorrei sosituire il codice
    '923-0420-03-01' 
    con un altro della stessa lunghezza.
    Come potete vedere l'istruzione
    file_op << text; 
    non funziona.
    Inoltre si osservi che il file è aperto sia in lettura che in scrittura con
    ios::in|ios::out
    Grazie dell'aiuto!
Devi accedere o registrarti per scrivere nel forum
3 risposte