Probleme mit Vector



  • Hi Leute
    ich bin gerade mit meinem Parser beschäftigt und hab jetzt probleme mit dem Parsen der Zeilen im Vector:

    std::string set::read(std::string var)
    {
        std::vector<std::string>::iterator i;
        std::string out, str, buf;
    
        switch(load_mod)
        {
            case 0:
                if(data.empty())
                {
                    break;
                }
    
                for(i = data.begin(); i != data.end(); i++)
                {
                    str=parse(var, *i);
                    cout << *i <<endl;
                    //return str; Gibt alle Zeilen von *i aus.
                    return str; //Gibt nur die ersten 2 Zeilen von *i aus.
                } 
            break;
    
            case 1:
                if(!set_.good())
                {
                    break;
                }
    
                while(!set_.eof())
                {
                    getline(set_, buf);
                    str=parse(var, buf);
                }
    
                return str;
                set_.close();
            break;
        }
        return str;
    }
    

    In case 0 ist das Problem das er mir nur die ersten 2 Zeilen meiner Datei ausgibt wenn ich dort return machen, wenn ich das return in case 0 weg lasse dann gibt er alle Zeilen aus aber parst nur die letzte davon.
    Am Parser selber und am laden der Datei in den Vector liegt es auch nicht.

    Gruß,
    Gamebuntu



  • Deine for Schleife wird nur einmal durchlaufen, wenn du am Ende ein return stehen hast.



  • Was soll denn überhaupt das 'return' dort? Damit beendest du doch die aktuelle Funktion...

    Du solltest dir noch mal selber genau überlegen, was du machen (parsen) willst - die bisherige Funktion ergibt jedenfalls keinen richtigen Sinn.
    Also konkret: was soll der Rückgabewert dieser Funktion sein?



  • gamebuntu schrieb:

    parst nur die letzte davon.

    Woraus schließt du das?



  • Ha hab den Fehler gefunden hab vergessen den String zu überprüfen. 🙄


Anmelden zum Antworten