2013-04-25 1 views
3
QString processName = "test.exe"; 
QString::toWCharArray(processName); 

Я получаю следующее сообщение об ошибке:Невозможно преобразовать QString в WChar массив

error: C2664: 'QString::toWCharArray' : cannot convert parameter 1 from 'QString' to 'wchar_t *' 
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 
+0

Это, как правило, проще всего использовать processName.utf16() – darron

ответ

8

Вы используете его неправильно. Вы должны называть toWCharArray на QString вы хотите преобразовать и передавая ему указатель на первый элемент массива вы выделили:

wchar_t array[9]; 
QString processName = "test.exe"; 
processName.toWCharArray(array); 

Это наполняет array с содержанием processName.

1

Я нашел, что текущего ответа недостаточно, «массив» может содержать неизвестные символы, потому что не имеет нулевого окончания для «массива».

У меня была эта ошибка в моем приложении и потратил много времени, чтобы понять это.

Лучший способ должен быть похож на это:

QString processName = "test.exe"; 
wchar_t *array = new wchar_t[processName.length() + 1]; 
processName.toWCharArray(array); 
array[processName.length()] = 0; 

// Now 'array' is ready to use 
... ... 

// then delete in destructor 
delete[] array; 
+0

Он сказал «из массива вы выделили». –