Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Сравнение строк
Для сравнения двух объектов класса basic_string
или объекта класса basic_string
и C-строки предназначены операторы ==
(равно), !=
(не равно), <
(меньше), >
(больше), <=
(меньше или равно) и >=
(больше или равно). Пример сравнения строк:
std::string str1("abc"), str2("abcd");
if (str1 == str2) {
std::cout << "str1 == str2" << std::endl;
}
else if (str1 < str2) {
std::cout << "str1 < str2" << std::endl;
}
else if (str1 > str2) {
std::cout << "str1 > str2" << std::endl;
} // Результат: str1 < str2
Обратите внимание на то, что сравнивать с помощью этих операторов C-строки нельзя, так как будут сравниваться адреса, а не символы в строках. Для сравнения C-строк необходимо использовать специальные функции, например, strcmp()
(см. разд. 7.11). Чтобы операторы работали корректно, необходимо, чтобы справа или слева от оператора находился объект класса basic_string
. Пример:
char a[] = "abc", b[] = "abc";
std::string c("abc");
std::cout << (a == b) << std::endl; // Сравниваются адреса!!!
std::cout << std::strcmp(a, b) << std::endl; // OK (равны)
std::cout << (a == c) << std::endl; // OK (равны)
std::cout << (c == b) << std::endl; // OK (равны)
Для сравнения объекта класса basic_string
с другим объектом класса basic_string
или C-строкой можно использовать метод compare()
. В качестве значения метод возвращает:
отрицательное число
— если объект классаbasic_string
меньше строки, переданной в качестве параметра;0
— если строки равны;положительное число
— если объект классаbasic_string
больше строки, переданной в качестве параметра.
Прототипы метода:
int compare(const _CharT *str) const noexcept;
int compare(size_type pos, size_type len, const _CharT *str) const;
int compare(size_type pos, size_type len, const _CharT *str,
size_type count) const;
int compare(const basic_string &str) const;
int compare(size_type pos, size_type len,
const basic_string &str) const;
int compare(size_type pos, size_type len, const basic_string &str,
size_type pos2, size_type count=npos) const;
Первый прототип сравнивает объект класса basic_string
с C-строкой. Второй прототип сравнивает фрагмент объекта класса basic_string
длиной len
начиная с индекса pos
с C-строкой, а третий прототип позволяет дополнительно указать длину фрагмента в C-строке с начала строки. Четвертый прототип сравнивает два объекта класса basic_string
. Пятый прототип сравнивает фрагмент объекта класса basic_string
длиной len
начиная с индекса pos
с другим объектом класса basic_string
, а шестой прототип позволяет дополнительно указать количество символов count
и начальный индекс pos2
в строке str
. Сравнение производится с учетом регистра символов. Пример сравнения строк:
std::string str1("abc"), str2("abd");
std::cout << str1.compare("abd") << std::endl; // -1
std::cout << str2.compare("abd") << std::endl; // 0
std::cout << str1.compare("abb") << std::endl; // 1
std::cout << str1.compare(0, 2, "ab") << std::endl; // 0
std::cout << str1.compare(0, 2, "abc", 2)
<< std::endl; // 0
std::cout << str1.compare(str2) << std::endl; // -1
std::cout << str1.compare(0, 2, str2) << std::endl; // -1
std::cout << str1.compare(0, 2, str2, 0, 2)
<< std::endl; // 0
Реквизиты
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов