Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 07-09-2013, 13.47.16   #1
Clanalog
Newbie
 
Registrato: 07-09-2013
Messaggi: 1
Clanalog promette bene
Problema caricamento da File! C++

Salve gente purtroppo ho un problema con il caricamento da File nel mio programma che realizza una libreria.
Vi spiego cosa avviene, una volta che salvo su File una Casa Editrice con i seguenti campi:
Nome, Iva, Telefono, Fax, questi 4 campi fanno parte della classe Casa_Ed mentre indirizzo e Codice Casa Editrice fanno parte di altre due classi separate, effettuo l'overload degli operatori >> e << in questo modo:

friend istream &operator>>(istream &stream, Casa_Ed &obCasa_Ed);
friend ostream &operator<<(ostream &stream, Casa_Ed obCasa_Ed);

Sembra che il salvataggio su File avvenga in modo corretto, il problema sorge una volta che il file viene CARICATO.
Quando viene caricato il file, il campo Nome viene saltato, come se non leggesse nulla infatti viene messo questo "", nel campo Iva viene messo in Nome e quindi viene tutto scalato.

Non riesco a capire il problema qualcuno di voi saprebbe darmi una spiegazione?

Quota:
/*OVERLOAD OPERATORI*/

istream &operator>>(istream &stream, Casa_Ed &obCasa_Ed)
{
obCasa_Ed.Inizializzatore();

char str[100]="\0";

stream.getline(str,99);
obCasa_Ed.Nome=new char [strlen(str)+1];
strcpy(obCasa_Ed.Nome, str);

stream.getline(str,99);
obCasa_Ed.Iva=new char [strlen(str)+1];
strcpy(obCasa_Ed.Iva, str);

stream.getline(str,99);
obCasa_Ed.Telefono=new char [strlen(str)+1];
strcpy(obCasa_Ed.Telefono, str);

stream.getline(str,99);
obCasa_Ed.Fax=new char [strlen(str)+1];
strcpy(obCasa_Ed.Fax,str);

stream >> obCasa_Ed.ind;
stream >> obCasa_Ed.Cd;

return stream;

}

ostream &operator<<(ostream &stream, Casa_Ed obCasa_Ed)
{
stream << obCasa_Ed.Nome << "\n";
stream << obCasa_Ed.Iva <<"\n";
stream << obCasa_Ed.Telefono << "\n";
stream << obCasa_Ed.Fax << "\n";
stream << obCasa_Ed.ind << "\n";
stream << obCasa_Ed.Cd << "\n";

return stream;
}


//SALVASU FILE
template<int Q>
void Biblioteca<Q>::Salva() const
{
int i;
char str[100];

cout<<"\nSalvataggio Biblioteca NOME: ";
cin.getline(str, 99);

ofstream out(str, ios::out | ios::binary | ios::app);

if(!out){
cout<<"IMPOSSIBILE APRIRE IL FILE\n";
exit(EXIT_FAILURE);
}

out<< Casa << "\n";
out<< Vol <<"\n";

for(i=0; i<Casa; i++) out << ArrayCasa[i] << "\n";

VolQDisp *x=Lista_Vol;

for(i=0; i<Vol; i++)
{
out << ArrayVolume[i] << "\n";
if(x!=0){
out << x->isbn << "\n";
out << x->q << "\n";

x=x->prox;}
}

out.close();
cout << "\nSALVATAGGIO COMPLETATO";

}

//CARICAMENTO DA FILE
template<int Q>
void Biblioteca<Q>::Carica()
{
char str[100]="\0";
int i, Q;
ISBN Isbn;


cout<<"\nCarica la Biblioteca, NOME FILE: ";
cin.getline(str,99);

ifstream in(str, ios::in | ios::binary);

if(!in){
cout<<"IMPOSSIBILE APRIRE IL FILE\n";
exit(EXIT_FAILURE);
}
in>> Casa;
in>> Vol;

for(i=0; i<Casa; i++) in >> ArrayCasa[i];

for(i=0; i<Vol; i++) {
in >> ArrayVolume[i];
in >> Isbn;
in >> Q;
}

in.close();
cout<<"\nCARICAMENTO EFFETTUATO";

}
Ho provato a mettere questo controllo ma non va, praticamente in ciclo continua spazzolandosi tutto il File e non esce mai.

Quota:
istream &operator>>(istream &stream, Casa_Ed &obCasa_Ed)
{
obCasa_Ed.Inizializzatore();

char str[100]="\0";
do{
stream.getline(str,99);
obCasa_Ed.Nome=new char [strlen(str)+1];
strcpy(obCasa_Ed.Nome, str);
};while(str!="")
[...]
}

Ultima modifica di booty island : 12-09-2013 alle ore 16.17.54 Motivo: Disabilitati gli smilies nel testo per maggior chiarezza del codice
Clanalog non è collegato   Rispondi citando
Vecchio 10-09-2013, 16.49.32   #2
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Rif: Problema caricamento da File! C++

Prima di tutto, apri con un editor esadecimale il file di testo generato...il terminatore di stringa si trova dove dovrebbe essere ed in numero coerente con le informazioni che vorresti fossero presenti nel file ?
Devi verificare sia la procedura di salvataggio, sia quella di lettura.
Consiglio: Prima di scrivere sul file, dirotta l'output a video (lo stream) e controlla.
LoryOne non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[9x - 3.11] INSTALLARE WINDOWS 3.1 A FIANCO DI WINDOWS 98 booty island Windows 9x/Me/NT4/2000 1 27-11-2012 01.08.51
Problema Prompt dei comandi all'avvio di Windows XP pische Sicurezza&Privacy 1 13-04-2010 20.23.19
problema memoria josefh♣ Windows 7/Vista/XP/ 2003 2 28-08-2007 11.03.42
[XP/SP2] Controllo in corso del file System primoair Windows 7/Vista/XP/ 2003 2 28-02-2006 22.13.01
TABS GATTACAMOMILLA Masterizzazione Giochi Games 2 04-04-2005 18.52.38

Orario GMT +2. Ora sono le: 14.43.26.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.