TGViewer
C++ geek C++ geek @cpp_geek · 3.53K subscribers
Post #381 1.55K
🔥 Как правильно сравнивать std::string в C++?

Доброй ночи! Давайте разберём важную тему – сравнение std::string в C++. Многие думают, что это просто (== и всё), но есть нюансы! Давайте разберёмся.

✅ Способы сравнения строк

1️⃣ Оператор ==
Если вам нужно проверить точное совпадение строк:

std::string str1 = "hello";
std::string str2 = "hello";

if (str1 == str2) {
std::cout << "Строки равны!\n";
}

Этот метод безопасен, читабелен и работает быстро.

2️⃣ Функция compare()
Если нужно получить порядок строк в алфавитном сравнении:

std::string str1 = "apple";
std::string str2 = "banana";

if (str1.compare(str2) < 0) {
std::cout << "apple идет перед banana\n";
}

🔹 compare() возвращает:
- 0, если строки равны
- < 0, если str1 меньше str2
- > 0, если str1 больше str2

3️⃣ Сравнение без учета регистра
В C++ нет встроенного метода, но можно использовать std::transform:

#include <algorithm>
#include <cctype>
#include <string>

bool caseInsensitiveCompare(const std::string& a, const std::string& b) {
return std::equal(a.begin(), a.end(), b.begin(), b.end(),
[](char c1, char c2) { return std::tolower(c1) == std::tolower(c2); });
}

std::string str1 = "Hello";
std::string str2 = "hello";

if (caseInsensitiveCompare(str1, str2)) {
std::cout << "Строки равны без учета регистра!\n";
}


4️⃣ Сравнение подстрок
Если нужно проверить, начинается ли строка с подстроки:

std::string text = "hello world";
std::string prefix = "hello";

if (text.rfind(prefix, 0) == 0) {
std::cout << "Строка начинается с 'hello'!\n";
}

✅ rfind(prefix, 0) == 0 проверяет, что prefix стоит в начале строки.

🚀 Итоги
✔ Используйте == для простого сравнения
✔ compare() – если важно узнать порядок
✔ Для регистра – std::tolower()
✔ Для подстрок – rfind()

Какой метод вы чаще используете? Делитесь в комментариях!

➡️ @cpp_geek
  • 👍 4
More from @cpp_geek
  1. Sep 24, 2026🎥 Вебинар по C++: Паттерн многопоточного программирования «Producer-Consumer» Когда неско…
  2. Sep 24, 2026Execution policy для параллельных алгоритмов Execution policy в C++ — это новшество, введе…
  3. Sep 17, 2026В чем разница между git fetch и git pull? Разница между этими командами заключается в том,…
  4. Sep 15, 2026std::tie std::tie — это функция, которая создает кортеж ссылок на lvalue из своих аргумент…
  5. Sep 11, 2026move constructor Move-конструктор — это специальный конструктор, который позволяет эффекти…
  6. Sep 9, 2026Move-only объекты и почему std::unique_ptr нельзя копировать Многие удивляются, когда комп…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →