@Krokochik

Почему не работает indexOf c++ qt?

Отправляю get http запрос, получаю html код страницы и ищу в нем нужные элементы. таких запросов всего 2. первый раз все ищет, а на 2м запросе не ищет от слова совсем. в любом случае выдает -1.

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    MainWindow::setFocus();


}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::weatherPars(QNetworkReply *reply)
{
    QString html = reply->readAll(), weather;
    int i = html.indexOf("°C")-1;
    if(i < 0){
        QMessageBox::critical(this, "Ошибка", "Вы ввели неверное название города или погода в нём неизвестна");
        return;
    }
    while(html[i] != QString(">") && i != 50 && i != 0){
        weather = html[i] + weather;
        i--;
    }
    ui->cWeath->setText(weather);


    disconnect(manager, &QNetworkAccessManager::finished, this, &MainWindow::weatherPars);

    connect(manager, &QNetworkAccessManager::finished, this, &MainWindow::timePars);
    QUrl url = QUrl(QString("https://www.google.com/search?q=CITY")
                     .replace("CITY", ui->lineEdit->text().replace(" ", "")));
    manager->get(QNetworkRequest(url));
}

void MainWindow::timePars(QNetworkReply *reply)
{
    ui->plainTextEdit->setPlainText(reply->readAll());

    QString html = reply->readAll(), city;

    qDebug() << i;
    qDebug() << html.indexOf("a");

    //while(html[i] != QString(">") && i != 50 && i != 0){
    //    city = html[i] + city;
    //    i++;
    //}

    ui->cityLbl->setText(city);

    disconnect(manager, &QNetworkAccessManager::finished, this, &MainWindow::timePars);
}


void MainWindow::on_pushButton_clicked()
{
    if(ui->lineEdit->text().replace(" ", "") != ""){
        connect(manager, &QNetworkAccessManager::finished, this, &MainWindow::weatherPars);
        QUrl url = QUrl(QString("https://www.google.com/search?q=погода+CITY&sxsrf=ALiCzsYVjVVKbBE4HK7GUOc_jH0OHNJthQ%3A1655124609068&ei=gTKnYtPzA6HprgTGl6WABg&ved=0ahUKEwiTuIfTu6r4AhWhtIsKHcZLCWAQ4dUDCA0&uact=5&oq=погода+москва&gs_lcp=Cgdnd3Mtd2l6EAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyCggAEEcQsAMQyQMyBwgAELADEEMyEgguEMcBENEDEMgDELADEEMYATISCC4QxwEQ0QMQyAMQsAMQQxgBSgQIQRgASgQIRhgAUABYAGDvBmgBcAF4AIABAIgBAJIBAJgBAMgBC8ABAdoBBAgBGAg&sclient=gws-wiz")
                         .replace("CITY", ui->lineEdit->text().replace(" ", "")));
        manager->get(QNetworkRequest(url));

    }else QMessageBox::critical(this, "Ошибка", "Пожалуйста, введите название города");
}


Вывод:
-2
-1

Отрывок из получаемого html:
62a78e345a186430606809.png
Как тут видно, буквы A есть, но indexOf их не видит
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы