Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [c++] Lettura da file

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    6

    [c++] Lettura da file

    Ciao a tutti, sto studiando i File, e ho provato a fare questo programmino in cui scrivo sul file e successivamente tramite la funzione File.good, vorrei prelevare una riga dal file e metterla in una stringa che chiamo s. Il compilatore mi da errore (no matching function for call to getline) quando uso getline per fare questo. Come ambiente di sviluppo uso qt, non so se può aiutare!

    string s;
    ofstream f("file.txt", ios::app); //se il file non esiste lo crea, altrimenti lo sovrascrive!
    //apre il file in modalità append, lasciando
    //intatto quello che c'è e scrivendo
    //alla fine
    // ofstream f("file.txt", ios:ut) apre il file in scrittura cancellando quello che c'era già
    if(!f)
    {
    cout<<"Errore nella creazione del File!";
    return -1;
    }

    f<<"Roba che ho scritto nel file"; // scrivo nel file

    f.close();
    cout<<"Adesso apro il file appena scritto:\n\n";

    f.open("file.txt", ios::in); //apro lo stesso file che ho creato sopra però ora in lettura!

    while(f.good())
    {
    getline(f, s); //preleva una riga dal file
    cout<<s<<endl;
    }
    f.close();
    //cout<<"Scrittura avvenuta con successo";
    return a.exec();
    }



    Sbaglio nell'utilizzare getline o il problema è un altro?
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quali include hai usato ?

    P.S. Usa i tag CODE per postare i sorgenti ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    6
    ho usato:
    #include <iostream>
    #include <fstream>
    ho provato ad aggiungere istream ma è uguale

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai inserito

    using namespace std;

    e

    #include <string>

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    6
    using namespace std; si, <string> no, l'ho inserito ora, ma l'errore è sempre lo stesso

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Puoi postare il codice *completo* (con include e tutto il resto), usando i tag CODE, con la dovuta indentazione e facendo copia-incolla del messaggio d'errore completo?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    6
    codice:
    #include <QtCore/QCoreApplication>
     #include <iostream> 
    #include <fstream> 
    #include <string> 
    using namespace std;
     int main(int argc, char *argv[]) 
    { 
    QCoreApplication a(argc, argv);
     string s; 
    ofstream f("file.txt", ios::app); //se il file non esiste lo crea, altrimenti lo sovrascrive! 
                                            //apre il file in modalità append, lasciando //intatto quello che c'è e scrivendo //alla fine                
                                          // ofstream f("file.txt", ios::out) apre il file in scrittura cancellando quello che c'era già 
    if(!f) 
    { 
    cout<<"Errore nella creazione del File!"; 
    return -1; 
    } 
    f<<"Roba che ho scritto nel file"; // scrivo nel file f.close();
     cout<<"Adesso apro il file appena scritto:\n\n";
     f.open("file.txt", ios::in); //apro lo stesso file che ho creato sopra però ora in lettura! while(f.good()) 
    { 
    getline(f, s); //preleva una riga dal file 
    cout<<s<<endl;
     } f.close();
     //cout<<"Scrittura avvenuta con successo";
     return a.exec(); 
    }
    Scusa avrei dovuto farlo da prima..

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... non è il massimo dell'indentazione ... non si capisce molto ... addirittura la

    while(f.good())

    è "nascosta" da un commento ...

    Se non si mostra correttamente ciò su cui si vuole un aiuto, non si può pretendere una risposta ...

    Comunque, il problema è che hai usato in "lettura" un oggetto di classe ofstream.

    Se devi usarlo prima in scrittura e poi in lettura allora utilizza la classe fstream scrivendo

    fstream f("file.txt", ios::app);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    6
    mi dispiace hai ragione..
    Comunque ora funziona, grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.