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


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


Можно использовать функции-члены assign() и append():

string s3;

 

// скопируем первые 4 символа s1

s3.assign ( s1, 4 );

s3 теперь содержит значение "Miss".

// добавим пробел

s3 += ' ';

Теперь s3 содержит "Miss ".

// добавим 4 первых символа s2

s3.append(s2,4);

s3 получила значение "Miss Anna". То же самое можно сделать короче:

s3.assign(s1,4).append(' ').append(s2,4);

Другая форма функции-члена assign()

имеет три параметра: второй обозначает позицию начала, а третий – длину. Позиции нумеруются с 0. Вот как, скажем, извлечь "belle" из "Annabelle":

string beauty;

 

// присвоим beauty значение "belle"

beauty.assign( s2, 4, 5 );

Вместо этих параметров мы можем использовать пару итераторов:

// присвоим beauty значение "belle"

beauty.assign( s2, s2.begin()+4, s2.end() );

В следующем примере две строки содержат названия текущего проекта и проекта, находящегося в отложенном состоянии. Они должны периодически обмениваться значениями, поскольку работа идет то над одним, то над другим. Например:

string current_project( "C++ Primer, 3rd Edition" );

string pending_project( "Fantasia 2000, Firebird segment" );

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

позволяет обменять значения двух строк с помощью вызова

current_project.swap( pending_project );

Для строки

string first_novel( "V" );

операция взятия индекса

char ch = first_novel[ 1 ];

возвратит неопределенное значение: длина строки first_novel равна 1, и единственное правильное значение индекса – 0. Такая операция взятия индекса не обеспечивает проверку правильности параметра, но мы всегда можем сделать это сами с помощью функции-члена size():

int

elem_count( const string &word, char elem )

{

    int occurs = 0;

 

    // не надо больше проверять ix

    for ( int ix=0; ix < word.size(); ++-ix )

        if ( word[ ix ] == elem )

           ++occurs;

    return occurs;

<


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



Книжный магазин