Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C++] Scrittura su file binari

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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [C++] Scrittura su file binari

    Originariamente inviato da alukard990
    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.
    Beh, non è un problema. E' normale se memorizzi i dati numerici in binario non poterli "leggere" con un qualsiasi editor ASCII ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quindi se io voglio visualizzare ad esempio la lunghezza della stringa( facciamo che è lunga 20)come mi consigli di operare?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho capito la domanda e non ho capito l'attinenza con quello che abbiamo già detto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Mi spiego meglio: se in input inserisco 20 non c'è il modo di visualizzare 20 e non caratteri speciali?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dovresti salvare il valore come stringa, ma perché mai? Non capisco ancora ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Lo avevo intuito di salvarlo come stringa però in uno dei tanti homework da consegnare al prof per poter effettuare l'esame di programmazione 1 mi diceva proprio di usare un int per il codice e un float per il peso...comunque grazie ancora per le risposte

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E va bene l'int e il float ... non vedo la necessità di convertirlo in stringa.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    vabè ho capito tutta la faccenda 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à.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.