Funktionen probleme



  • Hi Leute
    Ich versuch mich gerade an meiner ersten Library und hab beim testen festgestellt das ich die funktionen die nach einem wort suchen sollen nur einmal im programm eingesetzt werden können also wenn ich nach mehreren wörter einzelnt mit der selben funktion suchen möchte geht das nicht.

    Was kann ich dagegen machen?

    Hier ist jetzt mal eine funktion:

    int confGroup(const char *Group_Name)
        {
            std::string Name;
            unsigned int a;
            unsigned int i;
            unsigned int lange = Conf.zeile.size();
    
            for(i=0;i < lange; ++i)
            {
                if(Conf.zeile[i].substr(0,1) == "[" && Conf.zeile[i].substr(Conf.zeile[i].size()-1, Conf.zeile[i].size()) == "]")
                {
                    Name = Conf.zeile[i].substr(1, Conf.zeile[i].size()-2);
                    a = i+1;
                    ConfGroup.Anfang = i+1;
                }
            }
    
            if(Group_Name == Name)
            {
    
                while(a < lange)
                {
                    if(Conf.zeile[a].substr(0,1) == "[" || Conf.zeile[a].substr(0) == "")
                    {
                        ConfGroup.Ende = a;
                    }
                    ++a;
                }
    
                    return 0;
                }else{
                    return -1;
            }
    
        }
    

    PS: Programmiere mit c++ erst seit einem halben jahr



  • Deine Funktion aendert eine globale Variable. Wird ihr Wert nicht zurueckgesetzt, gibt es Probleme. Desweiteren halte ich einen Vergleich von const char* mit std::string fuer fragwuerdig.

    geht das nicht

    Diese Fehlerbeschreibung ist unzureichend, auch ist voellig unklar, was Conf oder Conf.zeile eigentlich ist.



  • // erst
    unsigned int a;
    // irgendwann spaeter
    a = i+1;
    // dann mal sowas
    while(a < lange)
    

    Meine Gegenfrage an dich 😃 Wo setzt du a auf einen Anfangswert zurueck

    "lange" ist kein guter Variablenname 👎



  • ok thx für die schnelle antwort.

    Edit:

    Conf.zeile ist ein string Vector der alle Zeilen der Dateien enthält.

    Die Funktion soll die Gruppe suchen die zwischen [] ist und dann den anfang und das ende der Gruppe suchen fals ein ende da ist.

    Der wert von a soll nicht auf 0 gesetzt werden weil er aber der nächsten Zeile unter der Gruppe nach dem ende suchen.


Anmelden zum Antworten