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!
%