until strange behavior

Jonathan M Davis jmdavisProg at gmx.com
Sun Jun 2 16:34:53 PDT 2013


On Monday, June 03, 2013 01:29:35 Jack Applegame wrote:
> Jonathan, thanks for the detailed response.
> 
> I think in D we should not use strings for storing "non text"
> data. For such things we must use byte[] or ubyte[]. And ranges
> will work as expected. Is it correct?

Exactly. If you want bytes, use ubyte[] or byte[] (probably ubyte[]). C++ 
lacks such a proper type (though C99 has uint8_t). char is specifically a UTF-8 
code unit and should be treated as such.

Also, if you have text that you _know_ is ASCII, then it's more efficient to 
cast the string to immutable(ubyte)[] and operate on it that way (so that it 
doesn't do any decoding). That's not currently handled by the string-specific 
functions (though the general array and range-based ones will handle it just 
fine), but I expect that that will change.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list