-         

Ergebnis 1 bis 3 von 3

Thema: Kurze frage zu strlen() und length()

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    321

    Kurze frage zu strlen() und length()

    Anzeige

    Mahlzeit!

    Als ich mit C angefangen hatte habe ich gelernt, dass es sinnvoll ist keine Funktion in eine Schleife einzubauen, da diese ansonsten bei jedem Durchgang erneut durchlaufen werden muss.

    Code:
    Beispiel:
    
    Anstatt:
    
    for(i=0;i<strlen(bla);i++)
    
    Besser:
    
    bis = strlen(bla);
    
    for(i=0;i<bis;i++)
    Seitdem ich nun auf C++ aufgesprungen bin sehe ich aber sehr oft in Tutorials zum Beispiel

    Code:
    for(i=0;i<bla.length();i++)
    Jetzt stellt sich mir die Frage, ist es bei C++ das gleiche spiel und length() wird jetzt wieder bei jedem Durchlauf ebenfalls durchlaufen, oder hat C++ da etwas eingelötet, was eine Schleife erkennt und demnach nur einmal length() abruft? Lustig wäre das ja schon, aber ich habe leider immer wieder das Gefühl, je mehr Rechenleistung und Speicher die Rechner kriegen, um so weniger Interesse zeigen die Leute beim Sparen.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    599
    Hallo,

    die beiden Dinge sind nicht exakt das gleiche, deshalb unterscheiden sie sich auch etwas in ihrem Verhalten.

    strlen ist eine Funktion, die die Länge von nullterminierten C Strings zurückgibt. Die muss also bei jedem Aufruf durch den Speicher laufen und bis zur nächsten Null laufen.

    C++ Strings sind nicht nullterminiert, sie können auch Nullzeichen enthalten und funktionieren dann immer noch. Der Aufruf von length durchläuft nicht den string, sondern liefert eine Membervariable der Klasse zurück, die die Anzahl der (wirklich) gespeicherten Zeichen zurückgibt. (Der interne Puffer des String Objekts kann mehr Speicherplatz vorhalten, damit beim Hinzufügen von Zeichen nicht jedesmal der String neu angelegt werden muss.)

    Im übrigen "hat C++ da noch was eingebaut", es gibt seit C++11 auch noch eine zweite Art von for-Schleife:
    http://en.cppreference.com/w/cpp/language/range-for

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    321
    Super, danke! Genau das wollte ich wissen!

Ähnliche Themen

  1. Kurze Frage zum MAX 232
    Von Kimundi im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 09.05.2010, 01:12
  2. Kurze OP-Frage + NTC
    Von triti im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 13.02.2008, 15:33
  3. Kurze Frage zu RDs on
    Von triti im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 11.08.2007, 16:58
  4. Kurze Frage zur Schaltung
    Von Tux12Fun im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 10.06.2007, 00:54
  5. Kurze Frage zur PWM
    Von x8r im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 14.03.2007, 16:40

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •