write struct as raw data to file

Steven Schveighoffer schveiguy at gmail.com
Sun Sep 26 17:54:38 UTC 2021


On 9/26/21 11:09 AM, Paul wrote:
> I'm building a binary file.  I can write my 'short[] myArray' directly 
> to the file using: File f = File( "myFile.wav", "wb" ); 
> f.rawWrite(myArray); It doesn't write any array formatting stuff (i.e. 
> '[ ,  , ]'); it just moves the data into myFile like I want.
> 
> I can't seem to do this with myStruct? myStruct is just a declaration 
> and initialization of a dozen atomic types (e.g uint WAVE_Id = 
> 0x45_56_41_57).  When I issue f.rawWrite(myStruct), it writes 
> "myStruct(...,...,etc. ) instead of just writing the data.

What is happening is that myStruct must have an alias-this to an array, 
and it is writing this array.

That's the only reasonable explanation I can think of.

> 
> Is there way to write the myStruct data to the file in a single 
> statement...or two?

```d
f.rawWrite((&myStruct)[0 .. 1]);
```

This will change the `myStruct` into an array of one struct instance, 
and then it can deal with it.

-Steve


More information about the Digitalmars-d-learn mailing list