C++-manual
Förutgående | Kapitel 18. Stränghantering | Nästa

# Iteratorer och `string`

Normala STL-iteratorer kan även användas tillsammans med `string` (se Kapitel 24 för mera information). Klassen `string` har metoderna `begin()`, `end()`, `rbegin()` och `rend()` som returnerar framåt- respektive bakåtiteratorer. Man kan därför enkelt iterera igenom en sträng med hjälp av dessa. Ett program som testar om en given sträng är ett palidrom kan skrivas med hjälp av iteratorer på följande sätt:

    #include <iostream>
    #include <string>

    int main (int argc, char * argv[]) {

      // verifiera antal parametrar
      if ( argc != 2 ) {
    	cout << "Fel antal parametrar!" << endl;
    	cout << "Användning: " << argv[0] << " sträng" << endl;
    	return 1;
      }

      string S = argv[1];

      // iteratorer till första och sista tecknet
      string::iterator It1 = S.begin ();
      string::reverse_iterator It2 = S.rbegin ();

      for ( ; It1 != S.end () && It2 != S.rend (); It1++, It2++ ) {
    	// är tecknen lika?
    	if ( *It1 != *It2 ) {
    	  // tecknen olika, inget palindrom
    	  cout << S << " är inget palindrom" << endl;
    	  return 0;
    	}
      }

      // alla tecken lika, vi har ett palindrom
      cout << S << " är ett palindrom!" << endl;
    }

Körning av programmet kan t.ex. ge resultatet:

    % ./Palindrom test
    test är inget palindrom
    % ./Palindrom 1234321
    1234321 är ett palindrom!
    % ./Palindrom saippuakivikauppias
    saippuakivikauppias är ett palindrom!
    %

Förutgående | Hem | Nästa
Konvertera till C-strängar | Upp | Filhantering