无法将QString转换为WChar数组

时间:2013-04-25 22:30:27

标签: c++ qt qt5

QString processName = "test.exe";
QString::toWCharArray(processName);

我收到以下错误:

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

4 个答案:

答案 0 :(得分:10)

您使用不当。您应该在要转换的toWCharArray上调用QString并向其传递指向您已分配的数组的第一个元素的指针:

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

这会将array的内容填入processName

答案 1 :(得分:4)

我发现目前的答案还不够,'array'可能包含未知字符,因为'array'没有零终止。

我在我的应用程序中遇到了这个错误,花了很长时间才搞清楚。

更好的方法应该是这样的:

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;

答案 2 :(得分:0)

1行整齐的解决方案:

processName.toStdWString().c_str()

答案 3 :(得分:0)

我用了杰克W的答案。 他正在使用toWCharArray方法。不幸的是,此方法不会终止字符串,因此在我的情况下它不起作用。 这个很完美:

QString processName = "test.exe";
(wchar_t*)processName.utf16();