Problema lettura file.txt [C++]

di il
4 risposte

Problema lettura file.txt [C++]

Ciao a tutti, sono nuovo del forum (e anche nel campo della programmazione)
sto scrivendo un programma che ad un certo punto deve leggere un file di testo "file.txt".

questo è il sottoprogramma che utilizzo per copiare in una variabile string tutto il contenuto del file:

void read_file(string&file_text)
{
    file_text="";
    string nomefile="file.txt";

    ifstream OpenFile("file.txt");		//*
    char ch;
    while(!OpenFile.eof())
    {
        OpenFile.get(ch);
        AddCharToString(ch, file_text);
    }
    OpenFile.close();
}
(il sottoprogramma AddCharToString() serve per convertire un char in string e "attaccarlo" a un'altra string)

void AddCharToString(char ch, string&stringa)
{
    string str;
    stringstream ss;
    ss << ch;
    ss >> str;
    stringa=stringa+str;
}
funziona tutto bene, l'unico problema è quando il file contiene degli spazi, e allora la stringa che dovrebbe contenere il testo del file lo contiene tutto ma elimina gli spazi.... come faccio a copiare nella string anche gli spazi?
grazie mille a tutti in anticipo!

PS: nella riga di codice dove ho messo il //* perché se nel nome del file scrivo "file.txt" va bene e se metto una variabile string che contiene "file.txt" no?

4 Risposte

  • Re: Problema lettura file.txt [C++]

    Puoi semplificare con:
    
    void AddCharToString(char ch, string&stringa)
    {
        stringa.append(1, ch);
    }
    
    vedi tu se tenere una funzione apposita o no (hint: no)
    
    PS: nella riga di codice dove ho messo il //* perché se nel nome del file scrivo "file.txt" va bene e se metto una variabile string che contiene "file.txt" no?
    
    A seconda del compilatore che usi (probabilmente vetusto), gli stream possono o no accettare una stringa (i compilatori allineati al C++11 dovrebbero farlo). In alternativa usi il metodo .c_str();
    
    ifstream OpenFile(nomefile.c_str()); 
    
  • Re: Problema lettura file.txt [C++]

    shodan ha scritto:


    Puoi semplificare con:
    
    void AddCharToString(char ch, string&stringa)
    {
        stringa.append(1, ch);
    }
    
    vedi tu se tenere una funzione apposita o no (hint: no)
    Molto meglio! grazie mille!
    
    PS: nella riga di codice dove ho messo il //* perché se nel nome del file scrivo "file.txt" va bene e se metto una variabile string che contiene "file.txt" no?
    
    A seconda del compilatore che usi (probabilmente vetusto), gli stream possono o no accettare una stringa (i compilatori allineati al C++11 dovrebbero farlo). In alternativa usi il metodo .c_str();
    
    ifstream OpenFile(nomefile.c_str()); 
    
    funziona perfettamente! grazie mille mi hai salvato la vita!
    Uso codeblock perchè è quello che ci fanno usare a scuola... quali altri compilatori mi consigliate?
  • Re: Problema lettura file.txt [C++]

    Codeblocks è solo l'ide. Se hai scaricato la versione col compilatore a bordo dovresti avere Gcc 5.qualcosa.
    A ogni modo per usi scolastici va bene( e comunque meglio se chiedi al professore se puoi usare qualche altra alternativa).
  • Re: Problema lettura file.txt [C++]

    shodan ha scritto:


    Codeblocks è solo l'ide. Se hai scaricato la versione col compilatore a bordo dovresti avere Gcc 5.qualcosa.
    A ogni modo per usi scolastici va bene( e comunque meglio se chiedi al professore se puoi usare qualche altra alternativa).
    ah ok allora dovrei avere GNU GCC compiler
Devi accedere o registrarti per scrivere nel forum
4 risposte