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