|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2002
Città: Liguria
Messaggi: 638
|
[c++] ifstream all'interno di un ciclo for
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: Codice:
#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; } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Intanto elimina stdio.h e stdlib.h. Sostituiscili con cstdio e cstdlib.
Quale compilatore usi su Windows ? |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:42.