PDA

View Full Version : [C++] Flusso Ifstream su più file


Barone84
29-06-2014, 16:36
Ciao a tutti,

ho un problema con il mio programmino in C++.

Ho usato correttamete (almeno credo) la funzione ifstream che apre il flusso del file in lettura e ho aperto il file txt che voglio leggere, ho letto il contenuto della riga che mi interessa e l'ho stampato su un file output txt.

Ora però vorrei aprire in lettura più file txt stampare la riga che mi interessa su ciascun di questi files su un file output txt in colonna.

La mia domanda quindi è: come posso aprire in lettura più file in contemporanea e stampare la riga che mi interessa di ognuno su un solo file output txt?
Questi i comandi che ho utilizzato:

fileDati.open("MioFILE.txt"); //crea il flusso in lettura
fileOutputDati.open("FileOutput.txt"); //crea il flusso in uscita

vi ringrazio dell'aiuto !!

Freaxxx
29-06-2014, 17:02
serve il codice completo altrimenti è impossibile aiutarti.

serve anche sapere su quale piattaforma vuoi operare sul file e quale codifica adotta il file o i files che stai tentando di aprire.

WarDuck
29-06-2014, 17:16
Devi aprire necessariamente ogni file di input.

Se l'input è uniforme (cioè ogni file è strutturato nello stesso modo) potresti anche pensare di fare qualcosa del tipo:



output = ofstream("outputfile");

inputFiles = { "file1.txt", "file2.txt", "file3.txt"};

for (auto s : inputFiles) // c++11
{
auto file = ifstream(s);

// fai quello che devi fare
}


PS: il codice è solo esplicativo nn vuole essere codice funzionante.

Barone84
29-06-2014, 20:21
Ciao,

sono su windows, ecco qui sotto il codice.
pensavo che magari fosse possibile fare un ciclo for per acquisire un numero imprecisato di file in lettura del tipo FileDati_[i] per i che va da 1 a n e per ognuno far girare automaticamente il codice qui sotto...


int main()
{
string TAGstr;
char buffer[2000]; //creo un vettore temporaneo di 2000 caselle
char TAG[10]; //creo un vett
ifstream fileDati; //comando per aprire un file in lettura
ofstream fileOutputDati; //comando per generare un file in uscita
fileDati.open("FileMio.txt"); //crea il flusso in lettura
fileOutputDati.open("FileOutput.txt"); //crea il flusso in uscita
fileDati.getline(buffer,300); //leggi prima riga e registra in un vettore chiamato buffer
while(!fileDati.eof()){cerco la riga che mi interessa}
cout << TAGstr << endl;
fileOutputDati << TAGstr << endl; //stampo su file in output