Salve, io dovrei leggere da un file di input(A) alcuni numeri, ritrovare questi numeri in un file(B) e in base ai numeri ritrovati, esportare una parte di testo del file(B) in un file di output(C)(un file di output per ogni numero trovato nel file(A)). I file di output mi vengono prodotti tutti ma solo quello relativo al primo numero viene riempito con i dati giusti. Che errore ho commesso nel ciclo?
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <cmath>
#include <iomanip>
using namespace std;
const int NUM_FILE = 20;
string converter (double ms,int index,string nome);
int main()
{
string parag[200],str,file[NUM_FILE],filevar;
string nomemass;
double massf, massData;
ifstream inn[NUM_FILE],inVar;
ofstream outt[NUM_FILE][200],outintest[NUM_FILE][200];
cout << "File contenente le variabili: ";
getline(cin,filevar);
inVar.open(filevar.c_str());
cout << "Inserire i nomi dei file di input(terminare dando la barra spaziatrice): ";
int ord=-1;
do
{
ord++;
getline(cin,file[ord]);
}while (file[ord] != " ");
int k = 0;
inVar.ignore(2000, ')');
inVar >> massf; // massa cercata dall'utente
while(!inVar.eof())
{
massf = massf + 1.0079;
nomemass = converter(massf,k,nomemass);
for(int j=0; j<ord; j++)
{
inn[j].open(file[j].c_str());
outt[j][k].open(string("Out" + nomemass + file[j]).c_str());
outintest[j][k].open(string("Intest"+ nomemass + file[j]).c_str()); // apro file output con solo intestazioni
while(inn[j])
{
Lunga porzione di codice che vi risparmio ma che ho testato e funziona
}
}
k++;
inVar.ignore(2000,')');
inVar >> massf;
}
return 0;
}
string converter(double ms,int index,string nome)
{
ostringstream os[200];
double massaconvert = ms;
os[index] << massaconvert; // trasformo la massa(double) in string per chiamare il file con la massa
nome = os[index].str();
return nome;
}
p.s. inutile dire che i file di input sono assolutamente ripetitivi quindi non c'è differenza di lettura tra un'iterazione e l'altra.