С++ для начинающих



         

Приводим слова к стандартной форме - часть 3


string::size_type spos = 0;

string::size_type pos3 = word.size()-3;

// "ous", "ss", "is", "ius"

string suffixes( "oussisius" );

if ( ! word.compare( pos3, 3, suffixes, spos, 3 ) ||     // ous

     ! word.compare( pos3, 3, suffixes, spos+6, 3 ) ||   // ius

     ! word.compare( pos3+l, 2, suffixes, spos+2, 2 ) || // ss

     ! word.compare( pos3+l, 2, suffixes, spos+4, 2 ) )  // is

    return;

В противном случае удалим последнее 's':

// удалим последнее 's'

word.erase( pos3+2 );

Имена собственные, например Pythagoras, Brahms, Burne-Jones, не подпадают под общие правила. Этот случай мы оставим как упражнение для читателя, когда будем рассказывать об ассоциативных контейнерах.

Но прежде чем перейти к ним, рассмотрим оставшиеся строковые операции.

Упражнение 6.17

Наша программа не умеет обрабатывать суффиксы ed (surprised), ly (surprisingly) и ing (surprisingly). Реализуйте одну из функций для этого случая:

(a) suffix_ed()   (b) suffix_ly()      (c) suffix_ing()




Содержание  Назад  Вперед