Rename std.string.toStringz?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Jun 19 06:20:17 PDT 2011


On 6/18/11 5:42 PM, Jonathan M Davis wrote:
> On 2011-06-18 06:35, Andrei Alexandrescu wrote:
>> On 6/18/11 4:59 AM, Jonathan M Davis wrote:
>>> I'll look at renaming toUTF16z to toWStringz to match toStringz (as was
>>> suggested by a couple of people in this thread)
>>
>> That should be a template toUTFz that takes either char*, wchar*, or
>> dchar*.
>
> A good point. Are you arguing that toStringz should be replaced by such a
> construct? Or that it should simply exist in addition to toStringz?
> Also, we _could_ make it so that such a template would take the mutabality of
> the pointer as well (e.g. toUTF!(char*)(str), toUTF!(const(char)*), etc.),
> which would allow it to be used in cases where you actually want a mutable
> string (which toStringz doesn't do).
>
> - Jonathan M Davis

I think that's a good idea, which would address that StackOverflow 
problem too.

The way I'd probably suggest we go about it is as a universal 
transcoder. Define std.conv.to with strings of any width and 
qualification as input and with pointers to characters of any width as 
output. It is implied that the conversion entails adding a terminating zero.

string a = "hello";
auto p = to!(wchar*)(a); // change width and qualifier


Andrei


More information about the Digitalmars-d mailing list