[Interest] Is it safe to use QString::utf16() as a Windows wchar_t*?

André Pönitz apoenitz at t-online.de
Thu Nov 9 23:07:11 CET 2017


On Thu, Nov 09, 2017 at 11:15:28AM +0200, Nikos Chantziaras wrote:
> On Windows, I use this:
> 
>   void func(const wchar_t*);
>   QString s;
> 
>   // ...
> 
>   func(reinterpret_cast<const wchar_t*>(s.utf16()));
> 
> This saves an allocation, a copy and a free since I don't have to use
> QString::toWCharArray(). However, is this actually safe? "It seems to work,"
> and AFAIK, QString::d->data() is already in the format and encoding Windows
> excepts a wchar_t* to be. Is this correct?

As others indicated, yes, it's safe, under the conditions you specified.

Whether it makes sense to sacrifice e.g. platform independence in user
code for one saved string copy is a different question, very likely
with a different answer.

Andre'



More information about the Interest mailing list