Wyciągnięcie jednej danej z linijki w QT

0

Linijka wygląda w ten sposób "--</td>2 200,98</td>-0,74</td>10"
jest ona pobierana z plku.txt
W jaki sposób mogę pokazać ją w Qt Creator w ten sposób by była pokazana tylko cząstka tej linijki -0,74 ?
próbowałem to zrobić w ten sposób: qDebug()<<linijka.split("td>2 200,98<");
lecz wyrzuca mi wtedy ("--</", "/td>-0,74</td>10") i zbyt wiele to nie pomaga:(

0

To pytanie wygląda na typowy problem xy.

Bezpośrednia odpowiedź na Twoje pytanie: użyj regexa (QRegExp skoro już używasz Qt).

Ale zastanów się co naprawdę chcesz robić, bo to wygląda jak parsowanie html, a do tego regexy zdecydowanie się nie nadają.

0
main.cpp
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    w.pobieraj();

    return a.exec();
}





mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

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


void MainWindow::pobieraj()
{
    manager=new QNetworkAccessManager(this);
    connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(koniecpobierania(QNetworkReply*)));
    manager->get(QNetworkRequest(QUrl("https://www.gpw.pl/indeksy_gieldowe")));
}

void MainWindow::koniecpobierania(QNetworkReply*odpowiedz)
{QString doplikuidzie;
   if(odpowiedz->error())
   {
       qDebug()<<"Nie udalo sie";
   }
   else
   {
       QString strim=odpowiedz->readAll();

       QTextStream pobranytekst(&strim);
       QString linia;

       while(!pobranytekst.atEnd())
       {
           linia=pobranytekst.readLine();
           if(linia.endsWith("</table>"))
           {

//qDebug()<<linia;
doplikuidzie=doplikuidzie+linia+"<br>";
           }
       }


   }
   zapisdopliku(doplikuidzie);

}

void MainWindow::zapisdopliku(QString przeniesienie)
{
    QString sciezka="C:/Users/FIlipk/Desktop/Projekty QT/indeksygieldowe/pobrane.txt";
   QFile tworzplik(sciezka);
   if(!tworzplik.open(QFile::WriteOnly|QFile::Text))
   {
       qDebug()<<"Nie mozna utworzyc pliku !";
       return;

   }
   QTextStream dopliku(&tworzplik);
   int dlugoscprzeniesienie=przeniesienie.size();
   for(int i=0;i<dlugoscprzeniesienie;i++)
   {

       if(i%50==0)
       {
           przeniesienie.insert(i,"\n");
       }

   }
   dopliku<<przeniesienie;
   tworzplik.close();
   filtrujipokaz();
}

void MainWindow::filtrujipokaz()
{
    QString sciezka="C:/Users/FIlipk/Desktop/Projekty QT/indeksygieldowe/pobrane.txt";
    QFile otworzplik(sciezka);
    if(!otworzplik.open(QFile::ReadOnly|QFile::Text))
    {
        qDebug()<<"Nie mozna otworzyc pliku !";
    }
    QString linijka;
    QTextStream zawartosc(&otworzplik);



int ktoralinia=1;
  while(!zawartosc.atEnd())
  {
      linijka=zawartosc.readLine();
      if(ktoralinia==15)
      {

         qDebug()<<linijka;



      }
      ktoralinia++;
  }

   // qDebug()<<"\n";
//    qDebug()<<dlugosctekstu;



}






mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QUrl>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QTextStream>
#include <QFile>
#include <QRegExp>


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    void pobieraj();
    void zapisdopliku(QString);
    void filtrujipokaz();
    ~MainWindow();


public slots:
    void koniecpobierania(QNetworkReply*odpowiedz);

private:
    Ui::MainWindow *ui;
    QNetworkAccessManager*manager;



};

#endif // MAINWINDOW_H


 



Kod jest bardzo pokrecony i wątpie ,że komuś się będzie chciało rozkminiać dlatego nie wstawiałem. 
W programie chodzi mi o to by
1.pobierał html ze strony https://www.gpw.pl/indeksy_gieldowe.
2.Przeniósł do pliku .txt  całą tą tabelkę ze zmianami indeksów giełdowych.
3.Odczytał Zmiana do odn. (w %) i porównał ją z tym co było przy ostatnim uruchomieniu.Narazie próbuje zrobić 1 (WIG20) jak to się uda to reszta powinna pójść z górki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1