converting D's string to use with C API with unicode
IGotD-
nise at nise.com
Sat Dec 5 20:12:52 UTC 2020
On Saturday, 5 December 2020 at 19:51:14 UTC, Jack wrote:
> So in D I have a struct like this:
>
>>struct ProcessResult
>>{
>> string[] output;
>> bool ok;
>>}
>
> in order to use output from C WINAPI with unicode, I need to
> convert each string to wchar* so that i can acess it from C
> with wchar_t*. Is that right or am I missing anything?
>
>
>>struct ProcessResult
>>{
>> string[] output;
>> bool ok;
>>
>> C_ProcessResult toCResult()
>> {
>> auto r = C_ProcessResult();
>> r.ok = this.ok; // just copy, no conversion needed
>> foreach(s; this.output)
>> r.output ~= cast(wchar*)s.ptr;
>> return r;
>> }
>>}
>
>>version(Windows) extern(C) export
>>struct C_ProcessResult
>>{
>> wchar*[] output;
>> bool ok;
>>}
I would just use std.encoding
https://dlang.org/phobos/std_encoding.html
and use transcode
https://dlang.org/phobos/std_encoding.html#transcode
More information about the Digitalmars-d-learn
mailing list