и в плюсах новичок. Использую QNetworkAccessManager, отправляю get запрос и получают код странички. Вывожу в plainTextEdit. Здесь все нормально, работает и выводится как надо. Но мне нужно найти в этом тексте подстроку и вывести ее. Вот если я загружаю полученный ответ в строку QString, а не в plainTextEdit, то туда почему-то загружается только первые 10 000 символов, остального нет. Значит максимальная длина QString 10 000 символов? Что тогда использовать, чтобы передать весь текст?
Вы уверены, что для простейшего парсера нужны Qt и плюсы? как определили, что в QString только 10к сиволов? в файл сохраняли?
Парсер это просто как задача, которую надо сделать на qt. Определил в дебагере.
ну если нужна подстрока найди ее. если она подчиняется некому шаблону используй регулярное выражение для ее поиска.
Ищу через indexOf(). Не находит. Смотрю в дебагер, там исходная строка длиной только 10к, хотя по факту она в разы больше.
Вот слот для ответа QNetworkAccessManager void Avito_MainWindow::replyNetManager(QNetworkReply *reply) { QString s1 = "Купить автомобиль в России"; QString s2 = "page-title/count"; QString s_all = reply->readAll(); ui->plainTextEdit->appendPlainText(s_all); int i_pos = s_all.indexOf(s1); s_all.remove(0, i_pos-1); i_pos = s_all.indexOf(s2); s_all.remove(i_pos, s2.count()); i_pos = s_all.indexOf("</"); QString s_value = s_all.mid(1, i_pos); ui->plainTextEdit->appendPlainText("s_value=" + s_value); reply->deleteLater(); }
Тут, возможно, дебаггер обрезает строку. В QString точно можно больше 10к символов.
Тоже такая мысль была
Пришел к такому же выводу
Обсуждают сегодня