Форум программистов, компьютерный форум CyberForum.ru

Сравнение строк string без учета регистра - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
himheart
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 2
06.04.2014, 01:34     Сравнение строк string без учета регистра #1
Есть уже реализованная стандартная функция для решения такой задачи?

Делал это через перевод обоих строк в нижний регистр и оператор ==, но хотелось бы сделать это попроще.
Пробовал String::Compare(String, String, Boolean), описание нашел на msdn, но как оказалось такого перегруженного метода нет.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
06.04.2014, 08:43     Сравнение строк string без учета регистра #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
#include <boost/algorithm/string/predicate.hpp>
 
int main()
{
    std::string str1="Str", str2="sTR";
    std::cout << std::boolalpha << boost::algorithm::iequals(str1, str2);
    return 0;
}
Bash
1
2
3
true
Process returned 0 (0x0)   execution time : 0.140 s
Press any key to continue.
Убежденный
Системный программист
 Аватар для Убежденный
14219 / 6234 / 988
Регистрация: 02.05.2013
Сообщений: 10,391
Завершенные тесты: 1
06.04.2014, 09:05     Сравнение строк string без учета регистра #3
std::collate::compare
http://www.cplusplus.com/reference/l...llate/compare/

Сравнение выполняется по правилам определенной локализации.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.04.2014, 10:16     Сравнение строк string без учета регистра #4
Цитата Сообщение от Убежденный Посмотреть сообщение
std::collate::compare
А какое это отношение имеет к сравнению без учета регистра?
Убежденный
Системный программист
 Аватар для Убежденный
14219 / 6234 / 988
Регистрация: 02.05.2013
Сообщений: 10,391
Завершенные тесты: 1
06.04.2014, 11:43     Сравнение строк string без учета регистра #5
Самое прямое.
Сравнение строк (с учетом регистра или без - не важно) не имеет большого
смысла вне контекста какой-либо локализации, потому что правила
сравнения символов в каждом языке свои.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.04.2014, 12:48     Сравнение строк string без учета регистра #6
Убежденный, в таком случае это ещё пол-задачи. И без приведения символов к одному регистру (тоже с учетом локали) (например: tolower) всё равно не обойтись.
А вообще, сдается мне, что ТС нужно вовсе решение для .Net, т.к. упомянуто по ходу дела именно оно.
Цитата Сообщение от himheart Посмотреть сообщение
String::Compare(String, String, Boolean)
http://msdn.microsoft.com/en-us/library/zkcaxw5y.aspx
Убежденный
Системный программист
 Аватар для Убежденный
14219 / 6234 / 988
Регистрация: 02.05.2013
Сообщений: 10,391
Завершенные тесты: 1
06.04.2014, 12:54     Сравнение строк string без учета регистра #7
Tulosba, по поводу tolower согласен.
А если пойти дальше, то сама идея выполнять такие задачи встроенными
средствами C++ сомнительна, хотя бы потому, что набор локализаций
не стандартизирован, поддержки Юникода нет и т.п.
Я бы вообще взял какую-нибудь CompareString/lstrcmpi, iconv или
даже ICU и не мучился.

Не по теме:


Мне все чаще кажется, что MS намеренно пишут кое-где C++ вместо более
точного C++/CLI или Managed C++. Новички, не подозревая, "подсаживаются"
на управляемый .NET-язык, а соскакивать потом уже поздно...

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2014, 13:49     Сравнение строк string без учета регистра
Еще ссылки по теме:

C++ Сравнение двух строк без учета пробелов
C++ Написать программу сравнения строк без учета регистра
C++ Сравнение строк без учета имеющегося в строке числа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
06.04.2014, 13:49     Сравнение строк string без учета регистра
  #8

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
Новички, не подозревая, "подсаживаются" на управляемый .NET-язык
Мне кажется тут дело немного в другом. Для начинающего программиста GUI приложения более привлекательны (а в некоторых случаях их просто навязывают: как например в каком-нибудь C++ билдере при открытии среды сразу появляется форма для кидания кнопок на нее) и просты с точки зрения привязки действий пользователя к тому или иному коду (написал обработчик Button1Clicked и готово). И выбирая GUI приложение в итоге получаем WinForms или даже WPF (ну не на MFC же формы клепать), если речь идет о MS, и тут сразу .Net, а значит управляемый язык. Можно конечно предположить, что знакомство программиста с GUI начнется с Qt (уже лучше, но всё равно не "чистые" плюсы с точки зрения кода верхнего уровня), но, по-моему, таких случаев на порядок меньше чем с MS или Embarcadero.

Yandex
Объявления
06.04.2014, 13:49     Сравнение строк string без учета регистра
Ответ Создать тему
Опции темы

Текущее время: 01:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru