Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    [c++]aggiungere dati ad un file, modalità append non funzionante

    ciao a tutti,
    stavo studiando i flussi input/output su file quando mi sono bloccato di fronte all'apertura di un file già esistente per poter aggiungere nuovi elementi:

    fstream stampa_data;
    stampa_data.open("scontrini.txt",ios:ut);
    stampa_data << "DATA SCONTRINO: " << giorno<<"-" << mese << "-" << anno <<endl;
    stampa_data.close();

    normalmente faccio così e fuziona alla grande..ma se metto:

    fstream stampa_data;
    stampa_data.open("scontrini.txt",ios::app ); //cioè aprire un file già esistente
    stampa_data << "DATA SCONTRINO: " << giorno<<"-" << mese << "-" << anno <<endl;
    stampa_data.close();

    così non funziona..di fatto non riesce ad aprire il file..cosa potrebbe essere?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma quando provi con app il file esiste o lo devi creare?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447
    Non vorrei sbagliarmi ma all'istruzione:
    codice:
    stampa_data.open("scontrino.txt", ios::app);
    devi sostiuire(aggiungere) questa:
    codice:
    stampa_data.open("scontrino.txt", ios::out | ios::app);

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Come dicevo anche in un altro topic, sono ancora abbastanza nabbo sul C++ tuttavia ho provato un paio di soluzioni e sembrano funzionare, comunque nel caso aspetta qualcuno più esperto per ulteriori conferme/spiegazioni, visto che probabilmente dirò "inesattezze" (per non dire altro :°°D)

    La prima consiste nel dichiarare uno stream di output con "ofstream" anziché di input-output con "fstream" e lasciare il resto così, quindi

    codice:
       ofstream flusso;
    
       flusso.open("ciao.txt", ios::app); //ciao.txt ovviamente già esiste e dobbiamo solo aggiungere qualcosa
    
       flusso << "Ciao :°)" << endl;
    
       flusso.close();
    la seconda consiste nel lasciare la dichiarazione con fstream ma specificare, in apertura del file, anche la modalità "out" tramite una pipe, quindi


    codice:
       fstream flusso;
    
       flusso.open("ciao.txt", ios::out | ios::app); //ciao.txt ovviamente già esiste e dobbiamo solo aggiungere qualcosa
    
       flusso << "Ciao :°)" << endl;
    
       flusso.close();
    questo dipende probabilmente dal fatto che anche se devi solo aggiungere qualcosa, devi specificare che il tuo file lo stai aprendo il lettura. Ora, quando dichiari uno stream di output "ofstream" (se ben ricordo) la modalità ios:ut è di default e non hai bisogno di specificarla. Se infece dichiari uno stream generico "fstream", devi dichiarare esplicitamente che vuoi aprire il file in lettura, quindi devi aggiungere ios:ut a ios::app.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    grazie ho usato il secondo metodo

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.