我使用的是 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 ) {
Run Code Online (Sandbox Code Playgroud)
使用的行QByteArray::indexOf()包含以下文本:
'indexOf' is deprecated: Use QString's toUtf8(), toLatin1() or toLocal8Bit()
Run Code Online (Sandbox Code Playgroud)
我不明白这一点,因为建议的函数都不像 的函数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
Run Code Online (Sandbox Code Playgroud)
仅QByteArray::indexOf(const QString& str, int from)已弃用。其他重载仍然可用。
您要做的就是使用QString::toUtf8()或QString::toLatin1()检索QString::toLocal8Bit()代表,然后可以将QByteArray其QString传递给 的未弃用重载QByteArray::indexOf()。
其原因很可能是QByteArray::indexOf()接受的重载QString不知道如何从编码的角度解释字符串。因此,你必须明确地进行“转换”。我没有对此进行研究,所以也许还有其他原因导致该功能被弃用。
查看文档相关已弃用函数的QString::toUtf8()我们了解到该函数在内部使用,因此您可以像这样调整代码以获得相同的行为:
if ( (intHdrEnd = arybytData.indexOf(cstrHeaderTerminator.toUtf8())) == -1 ) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |