以前,当我声明unicode时,我无法执行以下操作
sig1 = rand(100,1);
sig2 = [rand(50,1); sig1(end-10:end); rand(50,1)]; % a signal with imposed intersection.
idx = ismember(sig1,sig2); %multiple occurences variant of IA in [C,IA,IB]=intersect(sig1,sig2)
inter = sig1(idx) %The intersection
但是在我删除了我的未定义代码之后 我遇到以下错误
QString myPassword = "123";
TCHAR szPassword[32];
myPassword.toWCharArray(szPassword);
我现在如何将我的Qstring转换为TCHAR数组?
答案 0 :(得分:0)
Qt提供了几种在Windows标准的QString
和UTF16-LE之间转换的方法:
转换为C ++ std::wstring
:
QString myPassword = "abcd ελληνικά";
std::wstring wstr = myPassword.toStdWString();
MessageBoxW(0, wstr.c_str(),0,0);
要使用toWCharArray
,输入缓冲区必须有足够的内存并且必须以空值结尾:
wchar_t buf[100] = {0};
myPassword.toWCharArray(buf);
MessageBoxW(0, buf,0,0);
或使用返回QString::utf16()
的{{1}}方法,它需要const unsigned short*
强制转换:
const wchar_t*
请注意,MessageBoxW(0, (const wchar_t*)myPassword.utf16(), 0, 0);
是一个令人困惑的Windows宏,对于ANSI程序,它定义为TCHAR
,对于Unicode程序,它定义为char
。避免使用它。