如何从“ \ u0000”获取正确的QString?

问题描述 投票:1回答:2

有时我收到的QString值为“ \ u0000”,我想检查接收到的字符串是否等于“ \ u0000”。但是当我尝试时:

qDebug() << QString("\u0000") << QString::fromUtf8("\u0000");

我得到输出:"\u0001" "\u0001"

因此,我无法比较字符串。我看到最初使用字节中的snprintf来创建此字符串以获取char *,然后使用std :: string创建了std :: string和QString,但实际上到目前为止我还不能复制它。但是我觉得这是一种解决方法,但不是简单的方法。

如何使用QString API创建值为\u0000的QString,以及为什么QString("\u0000")产生值“ \ u0001”?

qt unicode qstring
2个回答
0
投票

QString始终为空终止。 null QString表示其内部数组中没有数据,但empty QString的内部数据数组中只有一个空字符。因此,如果您可以控制原始数组的发送者,则最好通过QByteArray而不是QString进行发送。您将无法在QString中计算多个空字符。

摘自QString参考文档:

QString().isNull();               // returns true
QString().isEmpty();              // returns true

QString("").isNull();             // returns false
QString("").isEmpty();            // returns true

QString("abc").isNull();          // returns false
QString("abc").isEmpty();         // returns false

0
投票

我想出了如何创建这样的字符串。

QString str(1, QChar('\0'));

或来自std :: string:

QString::fromStdString(std::string("\0", 1));

但是我仍然不知道为什么QString("\u0000")结果为“ \ u0001”

© www.soinside.com 2019 - 2024. All rights reserved.