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
答案 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();