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




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


{

    // возможна ошибка

    char ch = st[ index ];

    // ...

}

следует воспользоваться функцией at(), которая делает то же, что и операция взятия индекса, но с проверкой. Если индекс выходит за границу, возбуждается исключение out_of_range:

void

mumble( const string &st, int index )

{

    try {

        char ch = st.at( index );

        // ...

    }

    catch ( std::out_of_range ){...}

    // ...

}

Строки можно сравнивать лексикографически. Например:

string cobol_program_crash( "abend" );

string cplus_program_crash( "abort" );

Строка cobol_program_crash лексикографически меньше, чем cplus_program_crash: сопоставление производится по первому отличающемуся символу, а буква e в латинском алфавите идет раньше, чем o. Операция сравнения выполняется функцией-членом compare(). Вызов

sl.compare( s2 );

возвращает одно из трех значений:

  • если s1 больше, чем s2, то положительное;
  • если s1 меньше, чем s2, то отрицательное;
  • если s1 равно s2, то 0.
  • Например,

    cobol_program_crash.compare( cplus_program_crash );

    вернет отрицательное значение, а

    cplus_program_crash.compare( cobol_program_crash );

    положительное. Перегруженные операции сравнения (<, >, !=, ==, <=, >=) являются более компактной записью функции compare().

    Шесть вариантов функции-члена compare() позволяют выделить сравниваемые подстроки в одном или обоих операндах. (Примеры вызовов приводились в предыдущем разделе.)

    Функция-член replace() дает десять способов заменить одну подстроку на другую (их длины не обязаны совпадать). В двух основных формах replace() первые два аргумента задают заменяемую подстроку: в первом варианте в виде начальной позиции и длины, во втором – в виде пары итераторов на ее начало и конец. Вот пример первого варианта:

    string sentence(

        "An ADT provides both interface and implementation." );

    string::size_type position = sentence.find_1ast_of( 'A' );

    string::size_type length = 3;

    // заменяем ADT на Abstract Data Type




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