【发布时间】:2011-03-09 00:11:29
【问题描述】:
我有一个名为aDrive = "H:/"的字符串
我想将此字符串转换为 WCHAR,如下所示
WCHAR Drive[4];
aDrive.toWCharArray ( Drive ) ;
当我打印它时qDebug ()<<QString::fromWCharArray ( Drive );
它显示为"H:/???"
为什么我在最后得到了starnge字符..
感谢您的宝贵时间
【问题讨论】:
我有一个名为aDrive = "H:/"的字符串
我想将此字符串转换为 WCHAR,如下所示
WCHAR Drive[4];
aDrive.toWCharArray ( Drive ) ;
当我打印它时qDebug ()<<QString::fromWCharArray ( Drive );
它显示为"H:/???"
为什么我在最后得到了starnge字符..
感谢您的宝贵时间
【问题讨论】:
QString::toWCharArray() 不会以零终止数组。如果没有QString::fromWCharArray() 的显式数组长度,它将读取 wchars,直到读取到零 wchar。在这种情况下,您必须自己在末尾添加零 wchar,或者使用带有 QString::fromWCharArray() 的显式长度参数。
一如既往,documentation 是您的朋友。
【讨论】:
std::wstring 作为“存储”,如果您需要 const wchar_t*,请致电 c_str()。
这只是我的猜测。
根据 toWCharArray documentation:此函数不会将空字符附加到数组。返回的字符串未正确以空值结尾。当你打印它时,分配给 Drive 数组的内存之后的内存部分也被打印,直到达到一个空字节。
【讨论】: