Seite 1 von 1

Real-Life C++

Verfasst: Fr Mai 16, 2014 10:50 am
von Xin
Mal was schönes aus dem echten Leben:

Folgende Routine liest ein umklammertes Array von Strings aus einer Textdatei ein.
Zum Beispiel:

Code: Alles auswählen

( "Hallo", "Welt" )
p ist dabei der Text-Parser, Accept überspringt ein gesuchtes Zeichen, der zweite Parameter gibt an, ob Whitespaces (Leerzeichen, Tabs...) vor und nach dem gesuchten Zeichen mit übersprungen werden sollen, ParseString liest dabei einen String.

Code: Alles auswählen

    if( !p.Accept('(', true) )
        return false;

    ParsedString temp;
    while( true )
    {
        if( p.ParseString( temp ) )
        {
            result.push_back( temp.AsString() );

            if( p.Accept( ',' ), true )
                continue;
        }

        break;
    }

    return p.Accept( ')' );
    }
Was ist verkehrt gelaufen? ^^

Re: Real-Life C++

Verfasst: Fr Mai 16, 2014 10:57 am
von cloidnerux

Code: Alles auswählen

 p.Accept( ',' ), true 
Deine Parameterliste sieht etwas merkwürdig aus :D

Re: Real-Life C++

Verfasst: Fr Mai 16, 2014 11:28 am
von Xin
cloidnerux hat geschrieben:

Code: Alles auswählen

 p.Accept( ',' ), true 
Deine Parameterliste sieht etwas merkwürdig aus :D
Es ist ein Komma-Ausdruck - der letzte Ausdruck bestimmt das Eregbnis: true.

Accept( ',' ) hat einen Default-Parameter: false. Ob es nun klappt oder nicht, spielt für den Ausdruck keine Rolle: Es kommt ja immer true zurück.