On Sunday, 10 July 2016 at 19:50:28 UTC, Adam Sansier wrote:
On Sunday, 10 July 2016 at 19:44:01 UTC, Adam D. Ruppe wrote:
On Sunday, 10 July 2016 at 19:19:57 UTC, Adam Sansier wrote:
Is it possible to turn temporary char/wchar buffer in to a string to be used by string functions rather than having to convert?

What string functions in particular? If they are written correctly, it should just work.... mutable char[] can be passed as a char* or const char* with the .ptr property.


I could use C strcmp etc but then I might as well just write the code in C.

meh D rox over C even if you just use C functions

I'm trying to use windows registry functions. This requires passing a char(sometimes a TCHAR) buffer.

But I need to compare the results, case insensitive, to a string(since that is what D uses). It's being a real pain in the butt to deal with the mixture.

I tried using slices, which works for char but not wchar as string is not a immutable(wchar). I don't want to use wide strings because that doesn't seem to be a "thing" in d.

This whole char vs wchar vs dchar is a big confusing, not in what they are but how they all interrelate between D and windows and their doesn't seem to be an easy way to convert between them all unless one wants to litter their code with to!'s.

Well, the main problem I always faced is Windows having quite a bad string handling...

That said, if you want char[] -> string or wchar[] -> wstring you can use assumeUnique, which casts a mutable array to an immutable one. If you have an array of ubyte, ushort or int, and would like to use it as a string, you can use assumeUTF, which casts it respectively to string, wstring or dstring.
But both functions are in fact just casts.

Also keep in mind that in D a string literal will behave as a string, wstring or dstring based on the type of variable to which it is assigned.

This are just some hints, as I don't really understand what is not working for you. Do you mind showing a snippet?

Reply via email to