Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    7

    [C++] problema con gli stream

    Salve a tutti.
    Sto creando un piccolo programma con c++, e vorrei sapere come si può fare per cambiare il nome del file associato ad uno stream.
    Mi spiego meglio.
    Dopo aver aperto uno stream input di nome f1 gli ho associato un file di nome "name" [ifstream f1("name").
    A questo punto, se il file non esiste, desidero cambiare il file associato ad f1. Ho provato a chiudere lo stream [f1.close()] e a riaprirlo con un nuovo nome, ma non sembra funzionare.
    Per ora l'unica alternativa che ho trovato consiste nell'aprire un nuovo stream ed associarlo con il nuovo nome....idee più comode?
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447
    Se non ho capito male il tuo programma dovrebbe rinominare un file di nome "x" già esistente?

  3. #3
    usa il costruttore di ifstream senza argomenti
    codice:
      ifstream infile;
    
      infile.open ("myfile.txt", ifstream::in);
    
      if (infile.good())
        ....;
    e apri il file con open
    ciao
    sergio

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    7
    Originariamente inviato da Pacio88
    Se non ho capito male il tuo programma dovrebbe rinominare un file di nome "x" già esistente?
    esatto,il problema è proprio questo. Devo rinominare un nome file dato da utente, solo se questo risulta essere errato.

    per Sergio: la tua opzione è proprio quella che ho provato ad utilizzare io...xò non so perchè non funziona

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Rinominare un file esistente e' una cosa (e si fa con l'opportuna funzione del sistema operativo, a seconda che usi Windows o Linux ...).

    Quello che chiedi pero', non e' cosi' chiaro ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    7
    Originariamente inviato da oregon
    Rinominare un file esistente e' una cosa (e si fa con l'opportuna funzione del sistema operativo, a seconda che usi Windows o Linux ...).

    Quello che chiedi pero', non e' cosi' chiaro ...
    void nome_file(char file[],const int sz) {
    cout<<"inserisci il nome del file da cui estrarre i dati"<<endl;
    cin.getline(file,sz);
    }

    void modifica_file(char A[]) {
    strcat(A,".txt");
    }

    int main () {
    ...
    ...
    char B[32];
    int sz=32;
    nome_file(B,sz);
    ifstream f1;
    f1.open(B);
    if(f1.fail()) {
    modifica_file(B);
    f1.close();
    f1.open(B);
    }

    ecco a voi la porzione di codice "incriminata".
    Il compilatore non dà alcun errore ma, se viene eseguita la funzione modifica, lo stream f1 non trova più il file(anche se il nome scritto nell'array B risulta essere corretto dopo la modifica).

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Una spiegazione contorta ma alla fine si e' capito cosa intendi ...

    Se c'e' un errore (e te ne accorgi dalla fail), devi eseguire una

    f1.clear()

    e NON devi chiudere il file prima di riaprirlo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    7
    ottimo, è la funzione che mi serviva.
    Grazie mille a tutti per l'attenzione, Au revoir

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.