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

    [C++] funzioni: passare un file come argomento

    salve ragazzi, ho questo problema e non riesco a trovare soluzioni su nessuna guida:
    utilizzando l'I/O del C++, voglio creare una funzione che riceva un file come argomento e lo elabori..
    in C avrei fatto qualcosa del genere:
    codice:
    void gestisci(FILE*);
    per il prototipo,
    codice:
    void gestisci(FILE*fp)
    {
    //corpo della funzione
    };
    per la definizione,
    codice:
    gestisci(fd);
    per la chiamata all interno del main, dopo aver aperto il file fd.

    come si può "tradurre" tutto questo in C++?
    grazie per l'aiuto, spero mi possiate aiutare

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    crei una stanza di fstream e la passi per riferimento facendo attenzione di rimanere dentro il suo scope.


    codice:
    void mia_funzione ( fstream &mio_file) {
    ....
    }
    
    int main () {
    
    ...
    
      fstream mio_file ("test.txt", fstream::in | fstream::out);
    
      mia_funzione ( mio_file );
    
      mio_file.close();
    
    
    ...
    }

  3. #3
    perfetto, grazie! non avevo pensato ad una reference..
    solo che, in questo caso, quale sarebbe il tipo da inserire nel prototipo?

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    codice:
    void mia_funzione ( fstream &mio_file) {
    ....
    }
    Mi pare ci sia già.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    ma quella non è la definizione?
    vorrei inserire il prototipo all'interno di un header, quindi dovrei scrivere qualcosa tipo
    void mia_funzione (fstream&);
    oppure
    void mia_funzione (fstream);
    no?

    il fatto è che in questo modo mi viene restituito un errore:
    error C2061: syntax error : identifier 'fstream'

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    se vuoi inserire un prototipo in un file .h
    codice:
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    void mia_funzione (fstream & );
    comunque, quando fai precedere la definizione di una funzione al suo utilizzo non è necessaria la sua dichiarazione, è per questo che, in passato, la funzione main veniva definita come ultima.

    ciao
    sergio

  7. #7
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da sergionsk8
    ma quella non è la definizione?
    Si, ma tu avevi chiesto il tipo di dato da mettere nel prototipo e c'era già.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  8. #8
    Si hai ragione..solo che avevo dimenticato di inserire

    using namespace std;

    nell'header, e mi restituiva quell'errore, quindi pensavo che la sintassi fosse diversa..
    Comunque adesso ho risolto,
    grazie a tutti e alla prossima!

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.