PDA

Visualizza la versione completa : C++ scrivere struct su file


Luc@s
28-03-2003, 18:47
Ho questa struct:

struct conf
{
char cognome [50];
int vers;
char lingua[2];
};


Come la scrivo su files con il C++ standard?

l.golinelli
28-03-2003, 20:04
http://forum.html.it/forum/showthread.php?s=&threadid=425802

Luc@s
28-03-2003, 20:08
con le funzioni del C++ di ifstream/ofstream:stordita:

l.golinelli
28-03-2003, 20:14
Non mi ricordo come si usano... :fagiano:

Per queste cose uso C

:ciauz:

Luc@s
28-03-2003, 20:19
Originariamente inviato da l.golinelli
Non mi ricordo come si usano... :fagiano:

Per queste cose uso C

:ciauz:

a me serve in C++

Zalex
28-03-2003, 21:03
allora,
includi la libreria fstream(non c'e' poi bisogno di includere iostream xke' fstream la include)

per scrivere:

ofstream os("nomefile");
//ora puoi usare lo stream os per scrivere sul file
os<<"questa riga viene scritta sul file nomefile"<<endl;


facendo in questo modo al momento della scrittura viene cancellato l'eventuale contenuto del file, per evitare che cio' accada:
ofstream os("nomefile",ios::app);
os<<............ecc


se non sono stato chiaro sulla differenza tra le due modalita' di stream confronta i risultati del seguenti esempi:

//modalita' di default sovrascrive il file
#include<fstream>

main(){
ofstream os("unfile.txt");
for(int i=0;i<5;i++)
os<<i<<endl;
os.close();
}

//modalita' append non sovrascrive il file
#include<fstream>

main(){
ofstream os("unfile.txt",ios::app);
for(int i=0;i<5;i++)
os<<i<<endl;
os.close();
}

NB se il file non esiste lo crea!
ciao

Luc@s
28-03-2003, 21:11
sei un mito!
Ora posso risolvero un grosso problema!

E per leggere?

Johnny_Depp
28-03-2003, 21:43
#include <iostream>
#include <fstream>
using namespace std;

int main(){

char fname[20], lname[20];

// LEGGE

ifstream in ("scheda.txt");
in >> fname;
in >> lname;
in.close();

cout << fname << " " << lname << endl;

return 0;

}
-----------------------------------------
P.S. All'interno del file di testo "scheda.txt"
le stringhe NOME e COGNOME vanno inserite nel seguente ordine

NOME
COGNOME

Zalex
28-03-2003, 21:58
per leggere usi ifsream:D
ifsream is("nomefile");
naturalmente l'apertura del file puo' fallire per vari motivi(tipo il file non esiste) quindi dopo ifstream is("nomefile") conviene fare un controllo,piu' precisamente:
if(!is){cout<<"errore durante l'apertura del file"<<endl;exit(-1);}

ora analogamente a quanto gia' deto per la scrittura puoi usare is per leggere dal file;
istream offre diversi metodi utili alla lettura!per esempio se vuoi leggere il file riga per riga puoi farlo con getline(stream di input,buffer);
esempio:


......
ifstream is("unfile.txt");
if(!is){cout<<"Fail"<<endl;exit(-1);}
string buffer;
getline(is,buffer);
......

//in baffer c'e' la prima rigfa del file;


naturalmente se vuoi leggere tutto il file fai un ciclo while(!is.eof()).....
ciao

Zalex
28-03-2003, 22:03
scusa se do troppe cose per scontato, ma se devo spiegare tutto per filo e per segno trasformerei una risposta di un forum in un papiro:D


cmq eof() e' un metodo di istream che ritorna true quando sei arrivato alla fine del file( end of file)

ciao

Loading