Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Problema lettura file c++

    Salve.
    Avrei un piccolo problema con la lettura di un file c++.
    Io ho fatto una funzione che mi scrive dei valori in un file e quindi il mio file c++ è fatto cosi:
    ...
    a b c
    d e f
    g h i
    ...

    dove ogni lettera è un numero.

    Ora sto facendo una funzione per leggerli che ho scritto cosi:

    ifstream in("prova.txt",ios::in);
    int a,b,c;

    cin>>a;
    cin>>b;
    cin>>c;

    in.close();

    con cui vorrei leggere e memorizzare i dati di ogni riga in tre variabili separate...solo che il programma si blocca appena aperto il file.
    Dove sbaglio?

    Saluti

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Non è che si blocca, aspetta che tu scriva qualcosa perché stai usando le istruzioni per la lettura da tastiera...

    codice:
    cin>>a;
    cin>>b;
    cin>>c;
    tu non vuoi leggere da tastiera, ma da file. Per fare questo, lo stream di input non deve essere "cin" (associato allo stdin, la tastiera), ma quello assegnato al file che hai aperto, che è "in".
    every day above ground is a good one

  3. #3
    Perfetto!! Ti ringrazio!!! Funziona perfettamente!
    Grazie mille !!!

  4. #4
    Ma se adesso volessi leggere riga per riga fino alla fine del file?
    Io ho provato con un ciclo do while finchè non raggiungo l'eof, ma mi apre sempre il primo...

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    codice:
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
        string str; //variabile temporanea di memorizzazione
        fstream crea ("prova.txt",ios::out); //crea il file
        crea << "xxx" << endl;
        crea << "yyy";
        crea.close(); //chiudo l'oggetto di flusso
    
        fstream leggi ("prova.txt",ios::in);
        while(!leggi.eof()) //legge fino alla fine del file
        {
            leggi >> str;
            cout << str << endl;
        }
        leggi.close();
    
    
        return 0;
    }

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 © 2024 vBulletin Solutions, Inc. All rights reserved.