QByteArray indexOf 已弃用?
QByteArray indexOf deprecated?
我正在使用 Qt 5.15.2,我有以下代码:
QByteArray arybytData = mpsckIncoming->readAll();
bool blnHTTP = false;
if ( arybytData.startsWith("GET / HTTP/") == true ) {
//HTTP Request, probably from browser, jump to end of header
const QString cstrHeaderTerminator("\r\n\r\n");
int intHdrEnd;
if ( (intHdrEnd = arybytData.indexOf(cstrHeaderTerminator)) == -1 ) {
使用 QByteArray::indexOf()
的行包含文本:
'indexOf' is deprecated: Use QString's toUtf8(), toLatin1() or toLocal8Bit()
我不明白这一点,因为 none 的建议函数与 QByteArrray::indexOf()
的函数类似。
我应该忽略它吗?
我正在使用:
Qt Creator 4.14.0
Based on Qt 5.15.2 (Clang 11.0 (Apple), 64 bit)
Built on Dec 17 2020 07:57:30
From revision 909f74dc56
只有 QByteArray::indexOf(const QString& str, int from)
被弃用。其他重载仍然可用。
你打算做的是使用 QString::toUtf8()
、QString::toLatin1()
或 QString::toLocal8Bit()
来检索代表 QString
的 QByteArray
然后可以传递给 QByteArray::indexOf()
.
的非弃用重载
原因很可能是接受 QString
的 QByteArray::indexOf()
重载不知道如何从编码的角度解释字符串。因此,您必须明确地进行“转换”。我没有对此进行调查,所以可能还有其他原因导致该功能被弃用。
查看有问题的已弃用函数的 documentation,我们了解到它在内部使用了 QString::toUtf8()
,因此您可以像这样调整代码以获得相同的行为:
if ( (intHdrEnd = arybytData.indexOf(cstrHeaderTerminator.toUtf8())) == -1 ) {
我正在使用 Qt 5.15.2,我有以下代码:
QByteArray arybytData = mpsckIncoming->readAll();
bool blnHTTP = false;
if ( arybytData.startsWith("GET / HTTP/") == true ) {
//HTTP Request, probably from browser, jump to end of header
const QString cstrHeaderTerminator("\r\n\r\n");
int intHdrEnd;
if ( (intHdrEnd = arybytData.indexOf(cstrHeaderTerminator)) == -1 ) {
使用 QByteArray::indexOf()
的行包含文本:
'indexOf' is deprecated: Use QString's toUtf8(), toLatin1() or toLocal8Bit()
我不明白这一点,因为 none 的建议函数与 QByteArrray::indexOf()
的函数类似。
我应该忽略它吗?
我正在使用:
Qt Creator 4.14.0
Based on Qt 5.15.2 (Clang 11.0 (Apple), 64 bit)
Built on Dec 17 2020 07:57:30
From revision 909f74dc56
只有 QByteArray::indexOf(const QString& str, int from)
被弃用。其他重载仍然可用。
你打算做的是使用 QString::toUtf8()
、QString::toLatin1()
或 QString::toLocal8Bit()
来检索代表 QString
的 QByteArray
然后可以传递给 QByteArray::indexOf()
.
原因很可能是接受 QString
的 QByteArray::indexOf()
重载不知道如何从编码的角度解释字符串。因此,您必须明确地进行“转换”。我没有对此进行调查,所以可能还有其他原因导致该功能被弃用。
查看有问题的已弃用函数的 documentation,我们了解到它在内部使用了 QString::toUtf8()
,因此您可以像这样调整代码以获得相同的行为:
if ( (intHdrEnd = arybytData.indexOf(cstrHeaderTerminator.toUtf8())) == -1 ) {