Как сравнить две строки в c
Перейти к содержимому

Как сравнить две строки в c

  • автор:

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

AtomKrieg

Для 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-го символа может дать выигрыш по времени.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

cpp

  • 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++ вы найдете в официальной документации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *