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;
}