On 03/03/2014 01:44 PM, Christof Schardt wrote:> I'm evaluating D and try to write a binary io class.
> I got stuck with strings:
>
>      void rw(ref string x)
>      {
>          if(_isWriting)
>          {
>              int size = x.length;
>              _f.rawWrite((&size)[0..1]);
>              _f.rawWrite(x);
>          }
>          else
>          {
>              int size;
>              _f.rawRead((&size)[0..1]);
>
>              ... what now?

You need to have a buffer of 'size'. Not tested:

    auto s = new char[size];
    s = _f.rawRead(s);
    x = s;

However, the last line will not compile due to difference in mutability. So will need to do something like this:

    import std.exception : assumeUnique;

    x = assumeUnique(s);

>          }
>      }
>
> Writing is ok, but how do I read the bytes to the
> string x after having its size?

Ali

Reply via email to