std::basic_string::compare
|   int compare( const basic_string& str ) const;  | 
(1) | |
|   int compare( size_type pos1, size_type count1, const basic_string& str ) const;  | 
(2) | |
|   int compare( size_type pos1, size_type count1,              const basic_string& str,  | 
(3) | |
|   int compare( const CharT* s ) const noexcept;  | 
(4) | |
|   int compare( size_type pos1, size_type count1, const CharT* s ) const;  | 
(5) | |
|   int compare( size_type pos1, size_type count1, const CharT* s, size_type count2 ) const;  | 
(6) | |
Сравнение двух последовательностей символов.
1) Сравнивает данную строку со str. В первую очередь вычисляется количество символов для сравнения, по принципу size_type rlen = std::min(size(), str.size()). Далее для сравнения вызывается Traits::compare(data(), str.data(), rlen). Для обычных строк данная функция выполняет посимвольное лексикографическое сравнение. Если результат равен нулю (строки на текущий момент равны), то размеры строк дополнительно сравниваются следующим образом:
| Условие | Результат | Возвращаемое значение | |
|---|---|---|---|
 Traits::compare(data, arg, rlen) < 0
 | 
data меньше, чем arg | <0 | |
 Traits::compare(data, arg, rlen) == 0
 | 
 size(data) < size(arg)
 | 
data меньше, чем arg | <0 | 
 size(data) == size(arg)
 | 
data равно arg | 0 | |
 size(data) > size(arg)
 | 
data больше, чем arg | >0 | |
 Traits::compare(data, arg, rlen) > 0
 | 
data больше, чем arg | >0 | |
2) Сравнивает подстроку [pos1, pos1+count1) данной строки со str, по принципу basic_string(*this, pos1, count1).compare(str)
3) Сравнивает подстроку [pos1, pos1+count1) данной строки с подстрокой [pos2, pas2+count2) str, по принципу basic_string(*this, pos1, count1).compare(basic_string(str, pos2, count2))
4) Сравнивает данную строку со строкой с завершающим нулевым символом, начиная с символа, на который указывает s, по принципу compare(basic_string(s))
5) Сравнивает подстроку [pos1, pos1+count1) данной строки со строкой с завершающим нулевым символом, начиная с символа, на который указывает s, по принципу basic_string(*this, pos, count1).compare(basic_string(s))
6) Сравнивает подстроку [pos1, pos1+count1) данной строки с count2 первыми символами массива символов, на первый символ которого указывает s, по принципу basic_string(*this, pos, count1).compare(basic_string(s, count2)). (Примечание: символы, начиная с s по s+count2 могут включать нулевые символы)
Содержание | 
[править] Параметры
| str | - | строка, с которой будет проведено сравнение | 
| s | - | указатель на строку символов, с которой будет проведено сравнение | 
| count1 | - | количество символов данной строки для сравнения | 
| pos1 | - | позиция первого символа в данной строке, с которого начнется сравнение | 
| count2 | - | количество символов переданной строки для сравнения | 
| pos2 | - | позиция первого символа в переданной строке, с которого начнется сравнение | 
[править] Возвращаемое значение
отрицательное значение, если данная строка меньше, чем переданная последовательность символов, ноль, если обе последовательности символов равны, положительное значение, если данная строка больше, чем переданная последовательности символов.
[править] Исключения
1)2-6) Может генерировать исключения, которые генерирует соответствующий конструктор basic_string.
[править] Возможная реализация
template<class CharT, class Traits, class Alloc> int basic_string<CharT, Traits, Alloc>::compare(const std::basic_string& str) const noexcept { size_type lhs_sz = size(); size_type rhs_sz = str.size(); int result = traits_type::compare(data(), str.data(), std::min(lhs_sz, rhs_sz)); if (result != 0) return result; if (lhs_sz < rhs_sz) return -1; if (lhs_sz > rhs_sz) return 1; return 0; }  | 
[править] Пример
| Этот раздел не завершён Причина: нет примера  | 
[править] См. также
|   лексикографическое сравнение двух строк  (шаблон функции)  | |
|   возвращает подстроку  (public функция-член)  | |
|    определяет лексикографическое сравнение и правила хэширования строк   (шаблон класса)  | |
|     сравнивает две строки в соответствии с текущей локали  Оригинал:  compares two strings in accordance to the current locale Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция)  | |