Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: [c++]fstream

  1. #1

    [c++]fstream

    ho un problema con la gestione dei file,se per esempio creo un file di integer quando poi lo vado a leggere pero' mi considera i numeri inseriti come fossero un unico numero,cosa posso fare???

  2. #2
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246
    prova ad inserirli in un vettore..

    void leggi_da_File (vettore& a, int& size)
    {
    size = 0;
    ifstream in ("vettore.txt");
    if(in) {
    while( in >> a[size]) size++ ;
    }
    in.close();
    }
    Laddove "vettore.txt" è il file dove sono memorizzati gli interi..
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

  3. #3
    ma quello degli interi era un esempio,sto facendo delle prove per capire bene come funziona l'utilizzo dei file,poi li dovro' usare per un progetto con delle classi da me create...

  4. #4
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246
    non so se ho capito bene il problema..
    Premetto che ho usato i file solo per salvarci sopra o per leggerci le informazioni in esso contenute, non conosco eventuali altre applicazioni.

    Forse con delle classi tu vuoi utilizzare i file per salvarci (o per leggerci) dei dati: è un problema legato alla persistenza, giusto??

    Forse ti servono le varie modalità con cui un file può essere aperto, sia in lettura ch in scrittura??
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

  5. #5
    si,un altro problema che ho e' che uso un oggetto di tipo ofstream per scrivere sul file e ogni volta che faccio ripartire nel momento in cui dichiaro l'oggetto ofstream ricrea il file dei dati cancellando quello precedente


    es.
    ofstream f1("numeri");

    ecc.

  6. #6
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246
    ci sono vari modi per aprire un file..
    se lo apri in output, senza definire null'altro, per default se il file non esiste, lo crea, altrimenti lo cancella e poi lo sovrascrive..
    in lettura, invece, se il file non esiste ti dà errore e l'apertura è in modalità testo.

    è possibile modificare la modalità di apertura di un file con i seguenti specificatori, ti dico quelli che conosco:

    ios::binary //apertura in modalità binaria

    ios::in //apertura in input

    ios:ut //apertura in output

    ios::in | ios:ut //apertura in input e output

    ios::app //apertura in output con append:se il file esiste non lo cancella, ma continua a scrivere..

    ios::noreplace //in scrittura se il file esiste dà errore

    ios::nocreate //in scrittura non crea il file se non esiste

    ios::trunc //se il file esiste ne cancella il contenuto



    Tieni prsente che se introduci un solo specificatore perdi tutti i parametri di default!!!

    Avrai, allora:

    ofstream out("nomefile.txt",ios:ut | ios::app);

    apertura in modalità output e append: non ti cancella il file, ma comincia a scrivere da dove è finito..
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

  7. #7
    ok provero' con l'append.

    rimane il problema che se faccio ad es.

    ifstream f2("numeri");
    f2>>y;//dove y e' una var integer
    cout<<y;

    se in precedenza ho inserito nel file i numeri 1,23 e 4 mi stampa 1234 come fosse un unico num...

  8. #8
    ho provato l'append e in compilazione mi da un warning:

    warning: ANSI C++ forbids declaration `app' with no type

    e un errore:

    `int ios::app' is not a static member of `class ios'

  9. #9
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246
    rimane il problema che se faccio ad es.

    ifstream f2("numeri");
    f2>>y;//dove y e' una var integer
    cout<<y;

    se in precedenza ho inserito nel file i numeri 1,23 e 4 mi stampa 1234 come fosse un unico num...
    Ma hai mica detto al programma che i numeri sono separati??
    Quando fai

    f2>>y;

    Lo stream ti butta tutti i numeri nel programma, in rapida successione..(almeno credo visto quello che ti è successo)

    1,23 non è un float??

    Prova costruendoti un vettore, che tra l'altro è l'unico modo che conosco per visualizzare una sequenza di numeri nel modo corretto.Anzi mi sono addirittura meravigliato che in y non ti abbia messo solo il 4!!!Per ogni numero che inserisci devi creare un apposito contenitore, una variabile...perciò ti suggerisco un array..


    ho provato l'append e in compilazione mi da un warning:

    warning: ANSI C++ forbids declaration `app' with no type

    e un errore:

    `int ios::app' is not a static member of `class ios'
    Boh!!
    Qui casca l'asino che è in me!!!
    Magari se posti il prog possiam vedere se è un errore di codice, se è un errore di impostazioni del dev non so che dirti!!
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

  10. #10
    1,23 non e' un float?
    intendevo 1 e 23

    errori di codice non ci sono,normalmente funziona quando aggiungo l'append pero' mi da' il warning e l'errore....

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.