C++-manual
Förutgående | Appendix A. C-strängar | Nästa

# Längden av strängar

Man kan relativt enkelt beräkna längden av en sträng med t.ex. följande funktion:

    #include <iostream>

    int length (const char * String) {
      int Len = 0;

      if ( ! String ) {
        // ingen sträng givet
        return 0;
      }

      // iterera tills vi stöter på terminatorn
      while ( String[Len] != '\0' ) {
        Len++;
      }

      return Len;
    }

    int main () {
      char * S1 = "Hej!";
      char * S2 = "Hello world, this is main() calling";

      cout << S1 << " är " << length (S1) << " tecken lång." << endl;
      cout << S2 << " är " << length (S2) << " tecken lång." << endl;
    }

Ovanstående funktion kan hantera alla strängar så länge som de är terminerade av teckent `'\0'`. Den kan även kontrollera ifall en odefinierad pekare (nollpekare) skickats som parameter, och returnerar i så fall 0. Istället för att varje gång skriva en dylik funktion kan vi använda en standard funktion för att beräkna längden. Den heter `strlen()` och tar som argument en `const char *` och returner en `size_t` (positivt heltal). Denna funktion finns definierad i en headerfil `<string.h>` som även innehåller en del andra C-strängrelaterade funktioner. Notera extensionen `.h`. Blanda inte ihop denna med headerfilen `<string>` som ju defineirar normala `string`. De är tyvärr väldigt lika. Ovanstående program kan skrivas kortare med `strlen()`:

    #include <iostream>
    #include <string.h>

    int main () {
      char * S1 = "Hej!";
      char * S2 = "Hello world, this is main() calling";

      cout << S1 << " är " << strlen (S1) << " tecken lång." << endl;
      cout << S2 << " är " << strlen (S2) << " tecken lång." << endl;
    }

Förutgående | Hem | Nästa
Tilldelning och jämförelse | Upp | Kopiering av strängar