Salve ho un problema con la scrittura su file binari.In particolare quando inserisco numeri, su file vengono salvati caratteri speciali mentre per le stringhe è tutto ok.Vi posto il codice della classe "paccopostale" e la funzione membro scrivi che intende scrivere i dati di tale pacco su file binario. Grazie mille in anticipo a tutti per l'aiuto
codice:#ifndef PACCOP_H_ #define PACCOP_H_ #include <iostream> #include <fstream> using namespace std; class paccop{ private: char *indirizzo; int codice; float peso; public: paccop(const char* i="",const int c=0,const float p=0.0) {indirizzo=new char[strlen(i)+1];strcpy(indirizzo,i);codice=c;peso=p;} paccop(const paccop &); const paccop & operator=(const paccop &); const char* get_indirizzo()const {return indirizzo;} int get_codice()const {return codice;} float get_peso()const {return peso;} void set_indirizzo(const char* I) {delete[] indirizzo;indirizzo=new char[strlen(I)+1];strcpy(indirizzo,I);} void set_codice(const int C) {codice=C;} void set_peso(const float P) {peso=P;} void scrivi(); friend istream& operator>>(istream&,paccop &); friend ostream& operator<<(ostream&,const paccop &); }; #endif void paccop::scrivi() { char namefile[30]; ofstream file; cout<<"Inserisci il nome del file binario su cui vuoi scrivere: "; cin.getline(namefile,29); file.open(namefile,ios::binary|ios::out); char ind[30]; int c,n; float p; cout<<"Inserisci indirizzo,codice e peso del pacco\n"; while(cin>>ind>>c>>p) { n=strlen(ind); file.write((const char*)(&n),sizeof(n));//voglio salvare su file anche la lunghezza della stringa indirizzo file.write((const char*)(&ind),n); file.write((const char*)(&c),sizeof(int)); file.write((const char*)(&p),sizeof(float)); } file.close(); }

Rispondi quotando
se opero con dati numerici posso ottenere caratteri speciali in output se si opera con un editor qualsiasi...(infatti aprivo i .dat con il blocco note)...grazie ancora per la disponibilità.
