Problem z przerobioną funckją.

0

Mam problem po przerobieniu funkcji w programie, o którym mówiłem tutaj: https://4programmers.net/Forum/Off-Topic/Oceny_i_recenzje/290184-program_do_znajdowania_hashtagow_na_stronach_internetowych Przeróbka tej funkcji została zrobiona w celu zwiększenia wydajności programu poprzez usunięcie wywołań metody toStdString(). Na początku miałem teraz zamiar właśnie przerobić tę funkcję, potem ją przenieść do osobnego pliku tak jak mi radzono.
Przerobiona funkcja wygląda tak:

void MainWindow::End()
{
    ui->listWidget->clear();
    bool IsHashtag = false, TheSame = false;
    const char* text=reply->readAll().toStdString().c_str();
    QString tmp;
    size_t TextLength=strlen(text);
    QStringList elements;
    if(text[0]=='#' && isalnum(text[1]))
    {
        tmp+=text[1];
        IsHashtag = true;
    }
    for(size_t i=2; i<TextLength; ++i)
    {
        if(IsHashtag)
        {
            if(isalnum(text[i])) tmp+=text[i];
            else IsHashtag = false;
        }
        if(text[i]=='#' && !isalnum(text[i-1]) && isalnum(text[i+1]))
        {
            if(!tmp.isEmpty())
            {
                for(auto j=elements.begin(); j!=elements.end(); ++j)
                {
                    if(*j==tmp) TheSame = true;
                }
                if(!TheSame) elements.push_back(tmp);
                TheSame=false;
            }
            tmp.clear();
            IsHashtag = true;
        }
    }
    if(!tmp.isEmpty())
    {
        for(auto j=elements.begin(); j!=elements.end(); ++j)
        {
            if(*j==tmp) TheSame = true;
        }
        if(!TheSame) elements.push_back(tmp);
    }
    for(auto i=elements.begin(); i!=elements.end(); ++i)
    {
            ui->listWidget->addItem(*i);
    }
}

Jednak ona kompletnie nie działa. Program się na niej wywala. Poprzednia działająca poprawnie wersja tej funkcji wygląda tak:

void MainWindow::End()
{
    ui->listWidget->clear();
    bool IsHashtag = false, TheSame = false;
    QString text=reply->readAll(), tmp;
    QStringList elements;
    if(text.toStdString()[0]=='#' && isalnum(text.toStdString()[1]))
    {
        tmp+=text.toStdString()[1];
        IsHashtag = true;
    }
    for(int i=2; i<text.length(); ++i)
    {
        if(IsHashtag)
        {
            if(isalnum(text.toStdString()[i])) tmp+=text.toStdString()[i];
            else IsHashtag = false;
        }
        if(text.toStdString()[i]=='#' && !isalnum(text.toStdString()[i-1]) && isalnum(text.toStdString()[i+1]))
        {
            if(!tmp.isEmpty())
            {
                for(auto j=elements.begin(); j!=elements.end(); ++j)
                {
                    if(*j==tmp) TheSame = true;
                }
                if(!TheSame) elements.push_back(tmp);
                TheSame=false;
            }
            tmp.clear();
            IsHashtag = true;
        }
    }
    if(!tmp.isEmpty())
    {
        for(auto j=elements.begin(); j!=elements.end(); ++j)
        {
            if(*j==tmp) TheSame = true;
        }
        if(!TheSame) elements.push_back(tmp);
    }
    for(auto i=elements.begin(); i!=elements.end(); ++i)
    {
            ui->listWidget->addItem(*i);
    }
}

0

Problem rozwiązany.

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