C++ 保存QNetworkReply

C++ 保存QNetworkReply,c++,xml,regex,qt,qnetworkaccessmanager,C++,Xml,Regex,Qt,Qnetworkaccessmanager,我希望能够将QNetworkReply保存到QString/QByteArray。在我看到的示例中,它们总是将流保存到另一个文件中 目前,我的代码看起来像这样,我从主机获得一个字符串,我要做的就是解析它以查找指定的错误代码 if(_reply->error() == QNetworkReply::UnknownContentError) { qDebug() << _reply->readAll(); // prints out the xml message

我希望能够将QNetworkReply保存到QString/QByteArray。在我看到的示例中,它们总是将流保存到另一个文件中

目前,我的代码看起来像这样,我从主机获得一个字符串,我要做的就是解析它以查找指定的错误代码

if(_reply->error() == QNetworkReply::UnknownContentError) {

    qDebug() << _reply->readAll(); // prints out the xml message

    QString test = QString(_reply->readAll());
    qDebug() << test; // ""

    QByteArray test2 = QByteArray(_reply->readAll());
    qDebug() << test2; // ""

    QRegExp rxlen("(<code>)(.*(?=</code>))");
    rxlen.setMinimal(true);

    int pos = rxlen.indexIn(test); // pos == -1

    if(pos > -1) {
        qDebug() << rxlen.cap(2); // never hit
    }

}
消息非常小,看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
   <error>
      <code>string-value</code>
      <message>string-value</message>
   </error>

那么,我如何将这个小数据流加载到内存中,或者只是查找错误代码

QNetworkReply继承自QIODevice,它是一个流。当你从一条流中读到一些东西后,它就不再存在了。在调试行(带有
//的行打印出xml消息
注释)之后,再也没有什么可读的了。

更具体地说,它是一种顺序访问
QIODevice
,导致“读取一次,然后它就消失了”行为。您可以在的详细说明中阅读更多。