Unicode encodings and string literals

Jacob Carlborg doob at me.com
Mon Oct 8 01:19:37 PDT 2012


On 2012-10-08 10:06, Lubos Pintes wrote:
> Hi,
> I am playing with samples from Petzold's Programming Windows converted
> by Andrej Mitrovic. Many thanks, Andrej. :-)
> My question is about string conversion. There is a function in virtually
> every sample named "toUTF16z", which if I understand properly, converts
> string to UTF-16, so that they can be sent to various Windows API
> functions. But string literals, for example in MessageBox, are fine, no
> conversion is needed. I don't understand the magic, what is converted,
> and when?
> If some variable was used e.g. "appName.toUTF16z", and not "Error".toUTF16z

Without looking at the code, this is my guess:

The "toUTF16z" function converts a D string, of any Unicode encoding, to 
UTF-16 and converts that to a C string. String literals in D have a 
trailing null character \0 included making them compatible with 
functions expecting C strings. String variables on the other do not have 
the trailing null character and therefore needs a conversion.

-- 
/Jacob Carlborg


More information about the Digitalmars-d-learn mailing list