On Tuesday, September 21, 2010 16:41:57 bearophile wrote: > Jonathan M Davis: > > UTF-8 strings are easy because they're the same size as ubytes. > > Casting to char[] for the portion of the data that you want as a string > > seems to work just fine. > > D2 string are immutable(char)[] and not char[]. > Strings are UTF-8, while the raw bytes you read from a file may contain > everything, so in some situations you need to use the validate function.
Well, yes. I was talking about strings in the general sense (though UTF-8 strings), not necessarily the specific type string. The fact that you can cast to char[] makes getting strings easy, while the correct way to deal with types which aren't bytes isn't as obvious. > > > But what about other types? Is it the correct thing to > > cast to T[] where T is whatever type the data represents and then index > > into it to get the values that you want of that type and then cast the > > next section of the data to U[] where U is the type for the next section > > of the data, etc.? Or is there a better way to handle this? > > It's better to avoid casts when possible, and SafeD may even be restrict > their usage. Take a look at the rawWrite/rawRead methods of > std.stdio.File. That does look like a better way to handle it. Thanks. Normally, I don't mess with binary files, so I'm not particularly well-versed in the correct ways to read them. - Jonathan M Davis