Qt 如何从“Q”中获得正确的Q字符串\u0000”是什么;?

Qt 如何从“Q”中获得正确的Q字符串\u0000”是什么;?,qt,unicode,qstring,Qt,Unicode,Qstring,有时我会收到值为“\u0000”的QString,我想检查收到的字符串是否等于“\u0000”。 但当我尝试时: qDebug() << QString("\u0000") << QString::fromUtf8("\u0000"); qDebug()QString始终以null结尾。空QString表示其内部数组中没有数据,但空QString的内部数据数组中只有一个空字符。因此,如果您可以控制原始数组的发送方,那么最好使用QByteArray而不是QString来发

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

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

qDebug()QString始终以null结尾。空QString表示其内部数组中没有数据,但空QString的内部数据数组中只有一个空字符。因此,如果您可以控制原始数组的发送方,那么最好使用QByteArray而不是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

QString始终以null结尾。空QString表示其内部数组中没有数据,但空QString的内部数据数组中只有一个空字符。因此,如果您可以控制原始数组的发送方,那么最好使用QByteArray而不是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

我想出了如何创建这样一个字符串

QString str(1, QChar('\0'));
或者从std::string:

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

但是我仍然不知道为什么
QString(“\u0000”)
会导致“\u0001”

我找到了创建这样一个字符串的方法

QString str(1, QChar('\0'));
或者从std::string:

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

但是我仍然不知道为什么
QString(“\u0000”)
会导致“\u0001”

\u0000
是空字符。你希望印刷什么?如果要检查字符串是否为空字符串,
QString::isNull()
可能会有帮助。@vahancho对,这是空字符串。但实际上我已经收到了“\u0000\u0000\u0000\u0000”字符串,所以我不认为我可以检查它是否为NULL。尽管我会尝试。收到的QString“\u0000\u0000\u0000\u0000”返回
false
for
isNull()
\u0000
是空字符。你希望印刷什么?如果要检查字符串是否为空字符串,
QString::isNull()
可能会有帮助。@vahancho对,这是空字符串。但实际上我已经收到了“\u0000\u0000\u0000\u0000”字符串,所以我不认为我可以检查它是否为NULL。尽管我会尝试。收到的QString“\u0000\u0000\u0000\u0000\u0000”返回
false
for
isNull()
当我收到这样的字符串时,可以创建它。如果可以创建它,我必须能够创建相同的,以便能够比较它们。请将带“\u0000\u0000\u0000\u0000\u0000”内容的QString的.length()返回值发送给我。带“\u0000\u0000\u0000\u0000”内容的QString的长度是4@rightaway717这是从调试控制台得到的还是您的假设?这是控制台中length()方法的输出。谢谢你,不管怎样,我知道了如何创建这个字符串,并将在我收到这样一个字符串后发布一个回复,这是可能创建它的。如果可以创建它,我必须能够创建相同的,以便能够比较它们。请将带“\u0000\u0000\u0000\u0000\u0000”内容的QString的.length()返回值发送给我。带“\u0000\u0000\u0000\u0000”内容的QString的长度是4@rightaway717这是从调试控制台得到的还是您的假设?这是控制台中length()方法的输出。谢谢你,不管怎样,我知道了如何创建这个字符串,并将发布一个答案