【发布时间】:2020-02-19 10:36:40
【问题描述】:
有时我收到值为“\u0000”的 QString,我想检查收到的字符串是否等于“\u0000”。 但是当我尝试时:
qDebug() << QString("\u0000") << QString::fromUtf8("\u0000");
我得到输出:"\u0001""\u0001"
因此,我无法比较字符串。我看到最初这个字符串是使用snprintf from byte 创建的,以获取 char*,然后从 std::string 创建 std::string 和 QString,但到目前为止我实际上无法重现它。但我觉得这是一种解决方法,但不是简单的方法。
如何使用 QString API 创建值为 \u0000 的 QString,为什么 QString("\u0000") 会产生值“\u0001”?
【问题讨论】:
-
\u0000是空字符。您希望打印什么?如果要检查字符串是否为空字符串,QString::isNull()可能会有所帮助。 -
@vahancho 对,那是空的。但我实际上收到了“\u0000\u0000\u0000\u0000”字符串,所以我认为我不能只检查它是否为NULL。虽然我会尝试。
-
接收到的QString "\u0000\u0000\u0000\u0000" 为
isNull()返回false