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();
}