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?