Язык программирования C++. Вводный курс


Дополнительные операции со строками


Вторая форма функции-члена erase()

принимает в качестве параметров два итератора, ограничивающих удаляемую подстроку. Например, превратим

string name( "AnnaLiviaPlurabelle" );

в строку "Annabelle":

typedef string::size_type size_type;

size_type startPos = name.find( 'L' )

size_type endPos   = name.find_1ast_of( 'b' );

 

name.erase( name.begin()+startPos,

            name.begin()+endPos );

Символ, на который указывает второй итератор, не входит в удаляемую подстроку.

Для третьей формы параметром является только один итератор; эта форма удаляет все символы, начиная с указанной позиции до конца строки. Например:

name.erase( name. begin()+4 );

оставляет строку "Anna".

Функция-член insert()

позволяет вставить в заданную позицию строки другую строку или символ. Общая форма выглядит так:

string_object.insert( position, new_string );

position

обозначает позицию, перед которой производится вставка. new_string

может быть объектом класса string, C-строкой или символом:

string string_object( "Missisippi" );

string::size_type pos = string_object.find( "isi" );

string_object.insert( pos+1, 's' );

Можно выделить для вставки подстроку из new_string:

string new_string ( "AnnaBelle Lee" );

string_object += ' '; // добавим пробел

 

// найдем начальную и конечную позицию в new_string

pos = new_string.find( 'B' );

string::size_type posEnd = new_string.find( ' ' );

 

string_object.insert(

    string_object.size(), // позиция вставки

    new_string, pos,      // начало подстроки в new_string

    posEnd                // конец подстроки new_string

)

string_object

получает значение "Mississippi Belle". Если мы хотим вставить все символы new_string, начиная с pos, последний параметр нужно опустить.

Пусть есть две строки:

string sl( "Mississippi" );

string s2( "Annabelle" );

Как получить третью строку со значением "Miss Anna"?




Начало  Назад  Вперед