Binäres speichern/laden möglich bei bitfields?



  • Hi,

    wenn ich eine Struktur mit bitfields habe, wie kann ich die abspeichern und wieder aus einer datei binär laden? 😕



  • struct Bitfields 
       {
          unsigned int A : 1;
          unsigned int B : 1;
          unsigned int C : 1;
       };
    
       int main(){
    
    	   cout<<"Bitfields"<<sizeof(Bitfields)<<"\n";
    
    	   Bitfields bit;
    	   bit.A=true;
    	   bit.B=true;
    	   bit.C=false;
    	   cout<<bit.A<<" "<<bit.B<<" "<<bit.C<<endl;
    
    	   fstream File("bit.dat", ios::out|ios::binary);
    		if (File.is_open())
    			File.write((const char*)&bit, sizeof(bit)); 
    
    		File.close();   
    
    		File.open("bit.dat", ios::in|ios::binary);
    		if (File.is_open()){
    			Bitfields bitLes;
    			while (File.read((char*)&bitLes, sizeof(bitLes))){
    				cout<<bitLes.A<<" "<<bitLes.B<<" "<<bitLes.C<<endl;
    			}
    		}
       }
    

    denk ich mal..



  • musste man nicht drauf achten das die struktur eine große von vollen bytes hat? also z.b. 5 byte?



  • ''''''''''''''''''''''''' schrieb:

    musste man nicht drauf achten das die struktur eine große von vollen bytes hat? also z.b. 5 byte?

    hat sie immer. normalerweise ist ihre grösse durch 'sizeof(int)' ohne rest teilbar.



  • ''''''''''''''''''''''''' schrieb:

    musste man nicht drauf achten das die struktur eine große von vollen bytes hat? also z.b. 5 byte?

    hat sie. wie jedes objekz in c++. deswegen gint sizeof(bits) auch keine kommzahl aus.


Anmelden zum Antworten