Как сравнивать двух строк типа string?

Для class basic_string определён метод compare().
А через него переопределены friend операторы ==, |=, >, =
Все операции могут применяться и к string и к const char* как одному из операндов.
Смысл сравнений — естественный лексографический порядок, который вы поменять (легко) не можете.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
goldstar2154 @goldstar2154
Как правило для всех классов, реализующих работу со строками (CString, std::string, QString), уже доступны перегруженные операторы сравнения <, >, == и т.д. Так же могут существовать методы сравнения с условиями, вроде CompareNoCase.
Если вы реализуете алгоритм быстрой сортировки и хотите реализовать собственные методы сравнения строк, то самым простым вариантом будет пронаследоваться от класса строк и переопределять методы сравнения.
Если вы работаете с char* то посмотрите реализацию memmcmp и strcmp
www.cplusplus.com/reference/cstring/memcmp
www.cplusplus.com/reference/cstring/strcmp
P.S. совет, не изобретайте велосипед, т.к. алгоритмы сортировки оттачивались математиками и программистами много лет. Выигрыш по быстродействию вы сможете ощутить только, если у вас очень специфичные наборы строк.
Например у всех строк первые три символа одинаковы, тогда кастомная сортировка с 4-го символа может дать выигрыш по времени.,>
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C++
- +1 ещё
Сmake не подключаеться библиотека curses,что делать?
- 1 подписчик
- 3 часа назад
- 35 просмотров
Сравнение строк в языке C
@pavel char word[40]; scanf(«%s», &word[i]); и char **rootie; *rootie = new char[counter2]; for (int i = 0; i > counter2; i++) < for (int j = 0; j >20; j++) < fscanf(roots, "%s", rootie); >> . Ошибку выдает для word.
30 апр 2016 в 14:00
scanf(«%s», &word[i]); эм. вы ТОЧНО знаете что делаете? fscanf(roots, «%s», rootie); не представляю как оно компилируется.
30 апр 2016 в 14:06
*rootie = new char[counter2]; — я не уверен что именно это вы и хотели. Может rootie = new char* [counter2]; ? В общем советую весь код сюда выложить и внимательно посмотреть на типы данных (char char * и char **).
30 апр 2016 в 14:11
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Сравнение двух строк в Си выполняется вот так:
#include #include int main()
Отслеживать
ответ дан 1 мая 2016 в 10:36
9,032 2 2 золотых знака 19 19 серебряных знаков 34 34 бронзовых знака
- c
- строки
- char
- сравнение
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.9.3159
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как сравнить две строки в c
rohitrao835589 → memes
rohitrao835589 → memes of the day
Vladosiya → Codeforces Round 913 (Div. 3) Editorial
_ _asm__ → Most annoying person on CF in 2023
rohitrao835589 → memes of the day
Vladosiya → Codeforces Round 903 (Div. 3) Разбор
cloud_eve → Elementary Number Theory
MikeMirzayanov → Polygon: AI-Powered Automatic Tips
Blinov_Artemii → Bullying on Codeforces
maomao90 → Editorial for Hello 2024
Palestinian_Dream → Extracting Mathematical Ideas Behind The Problems
changingmong100 → Title: «A Mother’s Love in Codeforces»
MikeMirzayanov → Codeforces Single Account Policy: zh0ukangyang is Removed from the Rating
I_HATE_CONSTRUCTIVES. → IZhO 2024 day 1 discussion
Victor_Luis123 → Is Dijkstra’s overrated.
maomao90 → Hello 2024
atcoder_official → AtCoder Beginner Contest 335 (Sponsored by Mynavi) Announcement
![]()
salt_n_ice → CSES Longest Flight Route TLE in one test case
![]()
box → On the Min25 sieve and extensions / SPOJ ASSIEVE
maomao90 → I am top 1 contributor. AMA!
VivaciousAubergine → Wow! You received a rating of -501 in the CodeTON round. Share it!
whatthemomooofun1729 → codeforces login issue
mohammed_orkhan → I wnat to be EXPERT!!
uchicha_itachi → What does plagiarism actually include?
ATSTNG → Does Polygon automaticly send statements and tutorials of all problems into AI service?
Сравнение строк в C++: три основных метода
В этом руководстве мы изучим методы сравнения строк в C++. Давайте предположим, что нам необходимо ввести свое имя и пароль для входа на определенный веб-сайт. Для подобных случаев на серверной части мы должны собрать и написать скрипт для проверки и сравнения входной строки со строкой, хранящейся в базе данных.
Итак, на таком простом примере мы рассмотрим несколько способов сравнения строк в языке C++.
Методы сравнения строк в C++
Строки в C++ можно сравнивать с помощью любого из следующих методов:
- Строковая функция strcmp()
- Встроенная функция compare()
- Реляционные операторы С++ ( ‘==’, ‘!=’)
1: Строковая функция strcmp()
C++ имеет встроенные функции для управления и обработки данных строкового типа. Чтобы сравнить две строки, мы можем использовать функцию strcmp().
strcmp() — это библиотечная функция C, используемая для сравнения двух строк лексикографическим способом.
Синтаксис функции выглядит так:
int strcmp ( const char * str1, const char * str2 );
Функция возвращает 0, если строки одинаковы.
Входная строка должна быть массивом символов в стиле C.
При сравнении строк функция strcmp() учитывает регистр.
#include using namespace std; #include int main()
В результате вы получите:
String 1:JournalDEV String 2:JournalDEv The input strings are not equal.
#include using namespace std; #include int main()
Результат будет выглядеть так:
String 1:Python String 2:Python Both the input strings are equal.
2: Функция compare()
C++ имеет встроенную функцию compare(), которая нужна для быстрого сравнения двух строк.
Функция сравнивает две строки и возвращает следующие значения в зависимости от результата сравнения:
int compare (const string& string-name) const;
А теперь давайте рассмотрим пару примеров. Пример 1:
#include using namespace std; int main()
В приведенном выше примере мы сравнили строку 1 со строкой 2. Как видите, обе строки лексикографически одинаковы, потому функция возвращает 0.
String 1:Python String 2:Python Both the input strings are equal.
#include using namespace std; int main()
В приведенном выше фрагменте кода мы снова сравнили строку с другой входной строкой с помощью функции compare().
String 1:Python Strings are equal. String 2:JournalDEV Strings are not Equal.
3: Реляционные операторы в C++
Реляционные операторы C++, такие как «==» и «!=», можно легко использовать для сравнения строк.
Синтаксис их выглядит следующим образом:
string1 == string 2 или string1 != string2
Давайте взглянем на первый пример с использованием оператора ==:
#include using namespace std; int main() < string str_inp1; string str_inp2; cout>str_inp1; cout>str_inp2; if (str_inp1 == str_inp2) cout
Он вернет такой результат:
Enter the String 1: Python Enter the String 2: PythoN Strings are not equal
Во втором примере мы попробуем использовать оператор !=:
#include using namespace std; int main() < string str_inp1; string str_inp2; cout>str_inp1; cout>str_inp2; if (str_inp1 != str_inp2) cout
В этом случае будет следующий результат:
Enter the String 1: Python Enter the String 2: Python Strings are equal
Заключение
В этой статье мы рассмотрели различные способы сравнения строк в языке C++.
Больше информации о C++ вы найдете в официальной документации.