Entra

View Full Version : [c++] ifstream all'interno di un ciclo for


Andmart
27-06-2009, 17:38
Ciao a Tutti!

Ho bisogno del vostro aiuto. Ho un programma che deve leggere tanti file denominati 1, 2, 3, 4 posti all'interno della stessa diretory dove viene eseguito il programma e deve salvare il contenuto di essi in un unico file, con l'eccezione che se i file non ci sono o contengono solo la scritta "404 NOT FOUND" non deve salvare nulla.

Ho scritto il programma in C++ e l'ho compilato sotto Linux con c++ e va alla perfezione. Perņ lo stesso codice sotto Windows Xp non funziona: viene aperto solo il primo file della serie e poi non riesce a trovare quelli successivi.

Qualche idea??? Sto impazzendoci dietro...

Ciao,

Andrea

Allego sorgente:


#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string>
#include <sstream>
#include <cstdio>

std::string int_to_string(int numero)
{
std::string a;
std::stringstream out;
out << numero;
a = out.str();
return(a);
}

int main()

{
int max=50;
int i;
int controllo=0;
std::string modello;
std::string file;

std::ofstream OutFile ("totale.txt", std::ios::out);
std::ifstream inFileLong;

for (i=13; i<max; i++)
{
file=int_to_string(i);

inFileLong.open(file.c_str(), std::ios::in);
if (!inFileLong) {
std::cout << "Errore: file non trovato!!" <<std::endl;
}
else
{
while (!inFileLong.eof())
{
getline(inFileLong, modello);

if ( ! modello.empty() )
{

if (modello.compare("404 NOT FOUND")==0)
{

}

else
{
if (controllo==0)
{
OutFile << modello;
controllo=1;
}
else
{
OutFile <<"\n"<< modello;
}
}
}
}
}
inFileLong.close();

std::cout << file << std::endl;
}

OutFile.close();


return 0;
}

cionci
28-06-2009, 10:31
Intanto elimina stdio.h e stdlib.h. Sostituiscili con cstdio e cstdlib.

Quale compilatore usi su Windows ?