Пространства имён
Варианты
Действия

std::basic_string::compare

Материал из cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Функции-члены
basic_string::basic_string
basic_string::operator=
basic_string::assign
basic_string::get_allocator
Доступ к элементам
basic_string::at
basic_string::operator[]
basic_string::front(C++11)
basic_string::back(C++11)
basic_string::data
basic_string::c_str
Итераторы
basic_string::begin
basic_string::cbegin

(C++11)
basic_string::end
basic_string::cend

(C++11)
basic_string::rbegin
basic_string::crbegin

(C++11)
basic_string::rend
basic_string::crend

(C++11)
Вместимость
basic_string::empty
basic_string::size
basic_string::length
basic_string::max_size
basic_string::reserve
basic_string::capacity
basic_string::shrink_to_fit(C++11)
Операции
basic_string::clear
basic_string::insert
basic_string::erase
basic_string::push_back
basic_string::pop_back(C++11)
basic_string::append
basic_string::operator+=
basic_string::compare
basic_string::replace
basic_string::substr
basic_string::copy
basic_string::resize
basic_string::swap
Поиск
basic_string::find
basic_string::rfind
basic_string::find_first_of
basic_string::find_first_not_of
basic_string::find_last_of
basic_string::find_last_not_of
Константы
basic_string::npos
Функции, не являющиеся членами
operator+
operator==
operator!=
operator<
operator>
operator<=
operator>=
swap(std::basic_string)
operator<<
operator>>
getline
stoi
stol
stoll
(C++11)
(C++11)
(C++11)
stoul
stoull
(C++11)
(C++11)
stof
stod
stold
(C++11)
(C++11)
(C++11)
to_string(C++11)
to_wstring(C++11)
Вспомогательные классы
hash<std::string>
hash<std::wstring>
hash<std::u32string>
hash<std::u16string>
(C++11)
 
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,

             size_type pos2, size_type count2 ) const;
(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)
спецификация noexcept:  
noexcept
  

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.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]