Шаг 371.
Библиотека STL.
Строки. Операции сравнения

    На этом шаге мы рассмотрим особенности использования операции стравнения строк.

    Для строк определены стандартные операторы сравнения. В качестве операндов могут использоваться как строки, так и С-строки:

std::string s1,s2;
.    .    .    .
s1 == s2       // Возвращает true, если s1 и s2 содержат одинаковые символы 
s1 < "hello"  // Проверяет, что s1 меньше С-строки "hello"

    При сравнении строк операторами <, <=, > и >= символы сравниваются в лексикографическом порядке в соответствии с их текущими трактовками. Например, все следующие условия равны true:

std::string("aaaa") < std::string("bbbb") 
std::string("aaaa") < std::string("abba") 
std::string("aaaa") < std::string("aaaaaa")

    При помощи функций compare() можно сравнивать подстроки. Эти функции позволяют использовать более одного аргумента для определения строк, поэтому подстрока может задаваться индексом и длиной. Помните, что функции compare() возвращают не логический признак, а целочисленный код. Ноль является признаком совпадения строк; отрицательное значение указывает на то, что *this меньше заданной строки, а положительное значение - что *this больше. Пример:

std::string s('abcd");
s.compare("abcd")       // Возвращает 0
s.compare("dcba")       // Возвращает значение <0 (s меньше)
s.compare("ab")         // Возвращает значение >0 (s больше)

s.compare(s)            // Возвращает 0 (s равно s)
s.compare(0,2,s,2,2)    // Возвращает значение <0 ("ab" меньше "cd")
s.compare(1,2,"bcx",2)  // Возвращает 0 ("bc" равно "bc")

    Если сравнение должно производиться по другому критерию, вы можете определить этот критерий и воспользоваться алгоритмами сравнения STL или же применить специальные трактовки символов, позволяющие сравнивать строки без учета регистра символов. Но так как строки со специальным классом трактовок относятся к другому типу данных, они не могут комбинироваться с объектами типа string.

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




Предыдущий шаг Содержание Следующий шаг