Conteggio caratteri file txt

di il
31 risposte

31 Risposte - Pagina 2

  • Re: Conteggio caratteri file txt

    In effetti è un errore che faccio spesso
  • Re: Conteggio caratteri file txt

    Sapessi quelli che faccio io. Ho litigato x due giorni con una mappa (std::map) quando ero io a chiederli le cose sbagliate. E l'errore lo vedevo 6 classi + in su. Insomma dopo vario tempo passato in debug l'ho trovato.
  • Re: Conteggio caratteri file txt

    Adesso mi dice
    no matching function for call to 'std::basic_ifstream<char,std::char_traits<char>>::open (std::string&,const std::_Ios_Openmode&)'
    sono senza parole
    comunque il codice è
    
    #include <iostream>
    #include <stdlib.h>
    #include <string>
    #include <fstream>
    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");
    }
    
  • Re: Conteggio caratteri file txt

    Che razza di compilatore hai? con VS funzia tutto.cmq prova
    
    infile.open(filename.c_str(),ios_base::in);
    
  • Re: Conteggio caratteri file txt

    All'università ci fanno usare qtcreator. non so se cambia qualcosa
  • Re: Conteggio caratteri file txt

    Così non mi dà errore, ma ovviamente non ho capito niente di quello che hai fatto...
  • Re: Conteggio caratteri file txt

    Si vede che il tuo compilatore non ha la versione open che accetta stringhe ma solo array di char.
    filename.c_str() torna un char* dalla stringa. Così la funzione open è contenta.
  • Re: Conteggio caratteri file txt

    skynet ha scritto:


    filename.c_str() torna un char* dalla stringa
    scusa ma cosa significa?
  • Re: Conteggio caratteri file txt

    http://www.cplusplus.com/reference/string/string/c_str

    la classe string contine una stringa e lo manipola lei internamente (per adesso non ti interessa come è fatta.)

    string.c_str() in teoria fa così:

    char temp[string.length()]; //crea un array di caratteri di lunghezza x dove x è la lunghezza della stringa.
    copia tutti i caratteri presenti nella stringa nell'array temp.
    return temp;

    cosi tu se hai la stringa "pippo" questa ti ritorna l'array temp definto come
    char temp[] = "pippo";

    insomma è un ritorno da C++ a C.
  • Re: Conteggio caratteri file txt

    Capito tutto. grazie ancora
  • Re: Conteggio caratteri file txt

    Un'ultima cosa
    sono riuscito a far aprire il file di testo e a farlo visualizzare sulla console. adesso devo chiedere all'utente un carattere (e lo memorizzo in una variabile char) e poi devo scorrere il file cercando quante volte il carattere è ripetuto. Devo usare un ciclo FOR? Oppure c'è un modo per estrarre singoli caratteri?
  • Re: Conteggio caratteri file txt

    Io ho fatto così:
    
    #include <iostream>
    #include <stdlib.h>
    #include <string>
    #include <fstream>
    using namespace std;
    
    int main () {
        int repeat = 0;
        char theChar;
        string fileName;
        cout<<"Inserire il nome di un file di testo: ";
        cin>>fileName;
        ifstream theFile;
        theFile.open(fileName.c_str(),ios_base::in);
    
        while (theFile.good())
            cout<<(char) theFile.get();
    
        cout<<"Inserire un carattere da cercare nel file: ";
        cin>>theChar;
    
        while (theFile.good()) {
            if ((char) theFile.get() == theChar) {
                ++repeat;
            }
        }
        theFile.close();
    
        cout<<repeat;
        cout<<endl;
        system("PAUSE");
    }
    
    non dà errori ma il contatore repeat rimane sempre a 0.
  • Re: Conteggio caratteri file txt

    Guarda il commento.
    
    while (theFile.good())
            cout<<(char) theFile.get(); //finito sto ciclo hai raggiunto la fine file. Lo devi riavvolgere.
        
        theFile.seekg(0,ios_base::beg);
        cout<<"Inserire un carattere da cercare nel file: ";
        cin>>theChar;
    
        while (theFile.good()) {
            if ((char) theFile.get() == theChar) {
                ++repeat;
            }
        }
    
  • Re: Conteggio caratteri file txt

    Ho usato il tuo codice ma continua a dirmi zero. te lo rimetto
    
    #include <iostream>
    #include <stdlib.h>
    #include <string>
    #include <fstream>
    using namespace std;
    
    int main () {
        int repeat=0;
        char theChar;
        string fileName;
        cout<<"Inserire il nome di un file di testo: ";
        cin>>fileName;
        ifstream theFile;
        theFile.open(fileName.c_str(),ios::in);
    
        while (theFile.good())
            cout<<(char) theFile.get();
    
        cout<<endl;
        theFile.seekg(0,ios_base::beg);
        cout<<"Inserire un carattere da cercare nel file: ";
        cin>>theChar;
        while (theFile.good()) {
            if ((char) theFile.get() == theChar)
                ++repeat;
        }
        cout<<repeat;
        theFile.close();
        cout<<endl;
        system("PAUSE");
    }
    
  • Re: Conteggio caratteri file txt

    Passami anche il file così posso controllare.
Devi accedere o registrarti per scrivere nel forum
31 risposte