21/04/13 23:09
gian8
Salve
sto creando questo programmino che deve leggere 2 file .txt
e poi successivamente confrontarli e mostrare le parole per cui differiscono.
mi è sorto un problema:
Utilizzando la prima volta la funzione bib(fstream &file,string s);
mi restituisce in modo esatto il numero di righe,
chiamando successivamente la funzione stampa(), non ricevo nulla sullo schermo.
se inverto l' ordine delle chiamate, prima chiamo stampa() e poi chiamo bib(),
mi stampa esattamente la matrice, ma mi stampa 0 per il numero di righe.
volevo delle delucidazione per questo comportamento penso legato alla funzione getline, che ancora un po' mi sfugge.
vi posto il codice da me utilizzato
sto creando questo programmino che deve leggere 2 file .txt
e poi successivamente confrontarli e mostrare le parole per cui differiscono.
mi è sorto un problema:
Utilizzando la prima volta la funzione bib(fstream &file,string s);
mi restituisce in modo esatto il numero di righe,
chiamando successivamente la funzione stampa(), non ricevo nulla sullo schermo.
se inverto l' ordine delle chiamate, prima chiamo stampa() e poi chiamo bib(),
mi stampa esattamente la matrice, ma mi stampa 0 per il numero di righe.
volevo delle delucidazione per questo comportamento penso legato alla funzione getline, che ancora un po' mi sfugge.
vi posto il codice da me utilizzato
#include <cstdlib> #include <iostream> #include <fstream> #include <cstring> using namespace std; void stampa(fstream &file); int bib(fstream &file,string s); /* * */ int main(int argc, char** argv) { char file1[30],file2[30]; string s,s1; cout<<"inserire il nome del primo testo \n"; cin.getline(file1, 30); cout<<"inserire il nome del secondo file da usare \n"; cin.getline(file2, 30); fstream file; fstream filex; file.open(file1 ,ios::in); filex.open(file2,ios::in); if(!file) cout<<"ERRORE FILE 1 \n"; if(!filex) cout<<"ERRORE FILE 2\n"; cout<<"Righe 1 testo: "<<bib(file,s)<<endl; cout<<"Righe 2 testo"<<bib(filex,s1)<<endl; stampa(file); stampa(filex); return 0; } void stampa(fstream &file) { string s; while (file.good()) { getline(file,s,' '); cout<<s<<endl; } } int bib(fstream &file,string s) { int contarighe=0; while(!file.eof()){ getline(file,s,'\n'); contarighe++; } return contarighe-1; }
aaa