【问题标题】:QString::fromWCharArray gives strange charractersQString::from Char Array 给出奇怪的字符
【发布时间】:2011-03-09 00:11:29
【问题描述】:

我有一个名为aDrive = "H:/"的字符串

我想将此字符串转换为 WCHAR,如下所示

WCHAR Drive[4];

aDrive.toWCharArray ( Drive ) ;

当我打印它时qDebug ()<<QString::fromWCharArray ( Drive );

它显示为"H:/???"

为什么我在最后得到了starnge字符..

感谢您的宝贵时间

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    QString::toWCharArray() 不会以零终止数组。如果没有QString::fromWCharArray() 的显式数组长度,它将读取 wchars,直到读取到零 wchar。在这种情况下,您必须自己在末尾添加零 wchar,或者使用带有 QString::fromWCharArray() 的显式长度参数。

    一如既往,documentation 是您的朋友。

    【讨论】:

    • 即使我零终止或使用显式长度参数,我也遇到了奇怪的行为。因此,对于遇到相同问题的任何人,请尝试以下操作:使用 std::wstring 作为“存储”,如果您需要 const wchar_t*,请致电 c_str()
    【解决方案2】:

    这只是我的猜测。

    根据 toWCharArray documentation此函数不会将空字符附加到数组。返回的字符串未正确以空值结尾。当你打印它时,分配给 Drive 数组的内存之后的内存部分也被打印,直到达到一个空字节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多