Возвращать указатель из функции не совсем корректно и, например, у нас на фирме запрещено писать функции, возвращающие указатели. Т.к. программист в такой функции выделяет память и возвращает указатель на нее. А об удалении должен заботиться прикладной программист, а он может легко это забыть и получим утечку ресурсов.
Поэтому я приведу кусок кода, конвертирующий QString в LPTSTR без этих тонкостей. Кому надо напишут нужную функцию.
QString str = "String";
WCHAR * wStr = new WCHAR[str.length() + 1];
MultiByteToWideChar( 0, 0, str.toAscii().data(), str.length(), wStr, str.length());
wStr[str.length()] = '\0';
LPTSTR lpszStr = wStr;
delete [] wStr;
wStr = 0;
* This source code was highlighted with Source Code Highlighter.
А можно так:
ОтветитьУдалитьQString s = "String"
LPTSTR str = (LPTSTR)s.toStdWString().c_str();
toUtf16.data()//кроссплатформенно
ОтветитьУдалить//Точнее :
ОтветитьУдалитьQString s="Asd";
QByteArray a=s.toUtf16();
MessageBoxW(0,static_cast(a.data()),static_cast(a.data()),0);//как вариант любая другая юникод версия функции
//обратный перевод:
LPTSTR sUnicode;//указывает на юникод строку
QString sDestination=QString().fromUtf16(sUnicode);
Респект сработало спс...
ОтветитьУдалить