/Anonimizzato7887Utente anonimizzato11 nov 2010, 17:09Ciao a tutti. Voglio scrivere un programma in C++ che chieda all'utente di inserire in una stringa il nome di un file (che ovviamente posizionerò nella stessa cartella dell' .exe), poi chieda di inserire un carattere e infine conti quante volte il carattere viene ripetuto all'interno del testo. Il mio problema è che non so nemmeno come far leggere al programma il file txt...qualcuno mi può dare una mano? Grazie
/Anonimizzato7532Utente anonimizzato11 nov 2010, 17:26http://www.cplusplus.com/reference/iostream/ifstream
/Anonimizzato7887Utente anonimizzato11 nov 2010, 18:36Ok. E se io chiedo all'utente di inserire il nome del file in una stringa chiamata fileName, è giusto scrivere ifstream open (fileName.txt) ? Perchè nell'esempio c'è anche il comando infile ma non credo di averlo mai visto...in effetti ho qualche problema con la sintassi...
/Anonimizzato7532Utente anonimizzato11 nov 2010, 20:23Infile non è una funzione ma una variabile di tipo ifstream. http://www.cplusplus.com/reference/iostream/ifstream/open/ vedi l'esempio del commando. infile è la variabile. quindi e come dire: ifstream infile; string text; infile.open(...) text.substr(....) come vedi ogni classe può contenere delle funzioni e open è uno delle funzioni integrate in ifstream.
/Anonimizzato7887Utente anonimizzato11 nov 2010, 20:29Ah. quindi, tornando al mio caso, io dovrei scrivere ifstream infile; infile.open (fileName.txt) ?? o devo inserire un'altra riga per indicare che fileName è la mia stringa? Non ho capito cosa vuol dire text.substr che hai scritto tu...a cosa si riferisce?
/Anonimizzato7532Utente anonimizzato11 nov 2010, 20:46Il tuo esempio può essere scritto così: string filePath; cout << "Inserisci nome file" << endl; cin >> filePath; ifstream infile; infile.open(filepath,ios::in); ecc....
/Anonimizzato7887Utente anonimizzato11 nov 2010, 20:48Perfetto. devo chiederti ancora una cosa: cosa vuol dire ios::in nella quinta riga?
/Anonimizzato7532Utente anonimizzato11 nov 2010, 20:54Intendevo ifstream::in che poi è la stessa cosa visto che deriva da ios_base sta classe. Devi leggere un pò le discendenze delle varie classi o funzioni prima di usarle così è come se iniziassi dall'ultimo capitolo per arrivare al primo e ad ogni risposta hai sempre l'altra domanda. Non che mi stuffo sia chiaro ma ci sono certe domande che il tuo libro o magari una ricerca veloce di internet potrebbero aitarti di + che una risposta in un forum.
/Anonimizzato7887Utente anonimizzato11 nov 2010, 20:58Infatti faccio più cose parallelamente: chiedo qui sul forum e intanto cerco di studiare un po' in giro. il problema è che chi si avventura a programmare per la prima volta si trova davanti una foresta di funzioni e sottofunzioni dai nomi criptici. comunque sono certo che con un po' di tempo e un po' di aiuto riuscirò a cavarmela. Grazie ancora per la tua disponibilità.
/Anonimizzato7532Utente anonimizzato11 nov 2010, 20:59http://www.functionx.com/cpp/articles/filestreaming.ht leggi quì i vari parametri. ios::in sta a significare che il file in questione è un file in entrata (x lettura) ios::out file in uscita (x scrittura)
/Anonimizzato7887Utente anonimizzato11 nov 2010, 21:08Scusa ma sono ancora io... ho provato come hai detto tu ma mi dà errore e scrive aggregate 'std::ifstream infile' has incomplete type and cannot be defined incomplete type 'std::ifstream' used in nested name specifier che cosa significa?
/Anonimizzato7532Utente anonimizzato11 nov 2010, 21:17Fa vedere il codice. Mi sembra strano a me si compila.Nn è che dimentichi gli include neccessari x definire ifstream?
/Anonimizzato7887Utente anonimizzato11 nov 2010, 21:21Eccolo #include <iostream> #include <stdlib.h> #include <string.h> using namespace std; int main () { string fileName; cout<<"Inserire il nome di un file di testo: "; cin>>fileName; ifstream infile; infile.open (fileName, ios::in); system("PAUSE"); }
/Anonimizzato7532Utente anonimizzato11 nov 2010, 21:23E questo chi lo aggiunge? #include <fstream> #include <string>
/Anonimizzato7532Utente anonimizzato11 nov 2010, 21:27Togliti dalla testa gli include in C. In C++ non esiste string.h ma solo string.