QString convert to LPCWSTR ?



  • how QString convert to LPCWSTR ?


  • Moderators

    QString foo("Hello world");
    auto bar = std::make_unique<wchar_t[]>(foo.length() + 1);
    foo.toWCharArray(bar.get()); //toWCharArray does not append null terminator
    bar[foo.length()] = 0; //so add it manually
    
    MessageBox(NULL, bar.get(), L"Some caption", MB_OK);
    

    or shorter:

    QString foo("Hello world");
    MessageBox(NULL, foo.toStdWString().c_str(), L"Some caption", MB_OK);
    

    but be aware that the pointer returned in the second example is temporary, so the above is ok, but this is wrong:

    QString foo("Hello world");
    LPCWSTR bar = foo.toStdWString().c_str();
    MessageBox(NULL, bar, L"Some caption", MB_OK); //bar is invalid at this point
    


  • can i use:
    reinterpret_cast<LPCWSTR>(qstring.utf16()) ?


  • Moderators

    I personally cringe whenever I see reinterpret_cast but yes, it would work too.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.