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

Discussione: [c++] I/O su file

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152

    [c++] I/O su file

    Salve a tutti!

    é possibile col sistema di I/O del c++ continuare a scrivere in un file senza sovrasciverlo???

    Mi spiego meglio!!

    Se ho:
    ofstream out("prova.asc");
    out << 10 << " " << 123.3 << " " << 12;

    out.close

    Il file prova.asc sarà:
    10 123.3 12

    Se adesso mando in esecuzione nuovamente il programma , magari cambiando i valori, il file prova.asc , chiaramente, viene sovrascitto.
    Esiste un modo per far si che i nuovi valori vengano inseriti alla fine del file,???

    Vi ringrazio per l'aiuto

    CIAOOO
    andry80

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    sostituisci:

    ofstream out("prova.asc");

    con

    ofstream out("prova.asc", ios_base::app);

    così il file è aperto in append mode.

    Per avere la reference sull'i/o del c++:

    http://www.cplusplus.com/ref/

    e nel menu a sinistra scegli iostream library

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    In alternativa puoi fare:
    codice:
    ofstream out("prova.asc", ios::out);
    E poi usare seekp() e tellp() Per spostare il "cursore" di output. In questo modo non solo puoi aggiungere, ma anche modificare i dati preesistenti.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    Grazie ragazzi
    proverò in entrambi i modi

    Grazie
    andry80

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    c'è però un bel problema!! "il terminatore di stringa"
    se uso ios::app, nel momento in cui vado nuovamente a scrivere nel file il punto di partenza è una linea successiva mentre io ho bisogno che si continui a scrivere accanto l'ultimo carattere.

    Quindi se ho:
    123 23 34

    nella successiva scrittura dovrà essere:
    123 23 34 12 22 22

    e non
    123 23 34
    12 22 22

    Ho letto in library ma su come eliminare il terminatore ...
    andry80

  6. #6
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    c'è però un bel problema!! "il terminatore di stringa"
    se uso ios::app, nel momento in cui vado nuovamente a scrivere nel file il punto di partenza è una linea successiva mentre io ho bisogno che si continui a scrivere accanto l'ultimo carattere.

    Quindi se ho:
    123 23 34

    nella successiva scrittura dovrà essere:
    123 23 34 12 22 22

    e non
    123 23 34
    12 22 22
    con ios::app succede esattamente quello che vuoi tu;

    codice:
    #include<fstream>
    
    main() {
    
      ofstream ofs("prova.txt",ios::app);
    
      ofs<<0;
    
      ofs.close();
    
    }
    prova ad eseguire + volte questo programmino. nel file prova.txt avrai una serie di zero tutti nella stessa riga.

    con ofs<<0<<endl; o con ofs<<0<<"\n"; invece si continua dalla riga dopo

  7. #7
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    forse sei tu che introduci un carattere di nuova linea alla fine del file o quando riprendi a scrivere

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    53
    ok..
    volevo chiedervi:
    come si fa invece per leggere da un file di testo?
    In poche parole anzichè scrivere con out a mettere in una stringa quello che c è scritto sul testo?
    Grazie 1000

  9. #9
    ifstream file ("..."); // ios::in

    char buffer [300];

    file >> buffer; // oppure file.getline (buffer, 300,'\n'); se non erro

    file.close ();
    Experience is what you get when you don’t get what you want

  10. #10
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Puoi anche fare
    codice:
    char *buffer = new char[100];
    ifstream f; //lo apri metti il file, posizioni e...
    f.read(buffer,100);

    100 è il numero di byte da leggere.
    Ossia, legge 100 bytes dalla posizione del file.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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.