Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/121: Рейтинг темы: голосов - 121, средняя оценка - 4.80
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405

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

09.09.2017, 19:54. Показов 25883. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хэй! Есть ли в плюсах из коробки функция/метод сравнения строк без учета регистра? Или нужно метод compare из std::char_traits переопределять?
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.09.2017, 19:54
Ответы с готовыми решениями:

Сравнение строк string без учета регистра
Есть уже реализованная стандартная функция для решения такой задачи? Делал это через перевод обоих строк в нижний регистр и оператор...

Написать программу сравнения строк без учета регистра
Доброго времени суток! помагите плз!)Написать программу, которая запрашивает у пользователя строки, а затем сравнивает эти строки, не...

Сравнение строк без учёта регистра
Доброго времени суток. Функция strcmp сравнивает 2 строки с учётом регистра, а как можно сравнить без учёта?

19
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
09.09.2017, 20:12
zarko97, в бусте есть)
boost::iequals
1
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
09.09.2017, 20:19  [ТС]
Ferrari F1, варик, но все же хотелось прям прям из коробки
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
09.09.2017, 20:43
zarko97, помоему из коробки в std нет. Как вариант, можно привести две строки к одному регистру(верхнему или нижнему) и сравнить. Так из коробки можно.
0
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
09.09.2017, 20:46  [ТС]
Bretbas, в моем случае только одну, т.к вторая по дефолту ловеркейсовая
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
09.09.2017, 20:50
из коробки нет.
0
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
09.09.2017, 20:54  [ТС]
GbaLog-, мб как-то с std::equal ухитриться?

Добавлено через 1 минуту
GbaLog-, значит не зря я на джаву перескочил плюсы в универе никак не закончатся
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
09.09.2017, 20:56
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <string>
#include <algorithm>
 
int equals( std :: string str1, std :: string str2 )
{
    std :: transform( str1.begin(), str1.end(), str1.begin(), ::toupper );   
    std :: transform( str2.begin(), str2.end(), str2.begin(), ::toupper );   
    
    if(  str1 < str2 )
        return -1;
    
    if(  str1 > str2 )
        return 1;
    else
        return 0;
}
 
int main()
{
    std :: string str1 = "qwerty";
    std :: string str2 = "qwErTy";  
    if( equals( str1, str2 ) == 0 )
        std :: cout << "Pavnbl";
    else
        std :: cout << "Ne pavnbl";
}
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
09.09.2017, 20:59
Цитата Сообщение от zarko97 Посмотреть сообщение
мб как-то с std::equal ухитриться?
можно, но с локалями как-нибудь надо будет в любом случае париться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <clocale>
#include <algorithm>
 
bool icaseCmp(const std::string & lhs, const std::string & rhs)
{
    return std::equal(lhs.cbegin(), lhs.cend(), rhs.cbegin(), [] (const char lhs, const char rhs) { return std::tolower(lhs) == rhs; });
}
 
int main()
{
    std::cout << "Hello, world!\n";
    
    std::cout << std::boolalpha;
    std::cout << icaseCmp("CaSeStRiNg", "casestring") << "\n";
    std::cout << icaseCmp("casestring", "casestring") << "\n";
}
1
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
09.09.2017, 21:03  [ТС]
GbaLog-,
C++
1
2
3
template <class InputIterator1, class InputIterator2, class BinaryPredicate>
  bool equal (InputIterator1 first1, InputIterator1 last1,
              InputIterator2 first2, BinaryPredicate pred);
то, что надо

Добавлено через 3 минуты
Цитата Сообщение от GbaLog- Посмотреть сообщение
с локалями
опять велосипеды врайтить, найс вечерок
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
09.09.2017, 21:32
Цитата Сообщение от zarko97 Посмотреть сообщение
Ferrari F1, варик, но все же хотелось прям прям из коробки
Скоро boost и станет коробкой))

Добавлено через 5 минут

Не по теме:

Bretbas, красивый стиль написания кода! :)

0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
09.09.2017, 21:47
tolower/toupper для преобразования регистра символов используют правила текущей
локали (по дефолту "C" locale). Ну то есть, это не будет нормально работать с произвольной
строкой, содержащей, например, текст с кириллицей или диакритическими знаками.
2
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
10.09.2017, 08:18
Captain Maxee,

Не по теме:

Цитата Сообщение от Captain Maxee Посмотреть сообщение
красивый стиль написания кода!
вроде как обычный, не?:)

0
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
10.09.2017, 11:00  [ТС]
Нашел strcmpi, но она сишная, хотя как один из вариков

Добавлено через 27 минут
C++
1
strcmpi(str.c_str(), "ssss");
Добавлено через 44 секунды
опять же русская локаль пролетает

Добавлено через 29 секунд
но мне она и не нужна
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
10.09.2017, 19:02
Цитата Сообщение от zarko97 Посмотреть сообщение
Нашел strcmpi
нет такого в с++.
0
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
10.09.2017, 23:41  [ТС]
GbaLog-, она не в std определена, нужен хедер <csstring>

Добавлено через 59 секунд
Цитата Сообщение от GbaLog- Посмотреть сообщение
нет такого в с++
я ж вроде выше написал, что она сишная
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
11.09.2017, 05:30
Цитата Сообщение от zarko97 Посмотреть сообщение
я ж вроде выше написал, что она сишная
1. все сишные функции для исследования си-строк есть в с++(кроме strtok_s и strlen_s, но они явно под эту задачу не подходят).
2. её и в си нет.
http://en.cppreference.com/mwi... ch=strcmpi
Цитата Сообщение от zarko97 Посмотреть сообщение
нужен хедер <csstring>
такого в с++ нет.
в си тоже.
если это была опечатка и там имелся ввиду заголовок <cstring>, то это проблему не решило.
http://rextester.com/XPPHK83378
0
 Аватар для dailydose
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
11.09.2017, 10:00
GbaLog-, https://www.google.ru/search?q=stricmp
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
11.09.2017, 10:06
Цитата Сообщение от dailydose Посмотреть сообщение
...
21.5.3 Header <cstring> synopsis
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
namespace std {
    using size_t = see 18.2.4;
    void* memcpy(void* s1, const void* s2, size_t n);
    void* memmove(void* s1, const void* s2, size_t n);
    char* strcpy(char* s1, const char* s2);
    char* strncpy(char* s1, const char* s2, size_t n);
    char* strcat(char* s1, const char* s2);
    char* strncat(char* s1, const char* s2, size_t n);
    int memcmp(const void* s1, const void* s2, size_t n);
    int strcmp(const char* s1, const char* s2);
    int strcoll(const char* s1, const char* s2);
    int strncmp(const char* s1, const char* s2, size_t n);
    size_t strxfrm(char* s1, const char* s2, size_t n);
    const void* memchr(const void* s, int c, size_t n); // see 17.2
    void* memchr(void* s, int c, size_t n) // see 17.2
    const char* strchr(const char* s, int c) // see 17.2
    char* strchr(char* s, int c) // see 17.2
    size_t strcspn(const char* s1, const char* s2);
    const char* strpbrk(const char* s1, const char* s2) // see 17.2
    char* strpbrk(char* s1, const char* s2) // see 17.2
    const char* strrchr(const char* s, int c) // see 17.2
    char* strrchr(char* s, int c) // see 17.2
    size_t strspn(const char* s1, const char* s2);
    const char* strstr(const char* s1, const char* s2) // see 17.2
    char* strstr(char* s1, const char* s2) // see 17.2
    char* strtok(char* s1, const char* s2);
    void* memset(void* s, int c, size_t n);
    char* strerror(int errnum);
    size_t strlen(const char* s);
}
#define NULL see 18.2.3
0
38 / 27 / 13
Регистрация: 18.12.2019
Сообщений: 423
Записей в блоге: 1
07.05.2020, 15:08
Отключил проверку SDL
C++
1
2
3
4
5
void FindByName(Car* gr, int n, const char* name) { //функция поиска значений.
    for (size_t i = 0; i < n; i++)
        if (strstr(strlwr(strdup(gr[i].Name)), strlwr(strdup(name))))
            Print(gr[i]);
}
Профит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2020, 15:08
Помогаю со студенческими работами здесь

Сравнение двух строк без учета пробелов
Пишем в Microsoft Visual Studio 2010 -&gt; Win32 Console Application -&gt; C++ Задача такова: написать программу которая сравнивает две строки...

Сравнение строк без учета имеющегося в строке числа
Есть строка содержащая слово и через пробел число, потом еще одно слово. Число может быть абсолютно любым, самое главное чтобы оно было....

Сортировка без учета регистра
Как можно реализовать сортировку без учета регистра слов? Дан текст, состоящий из N (2&lt;=N&lt;=10)) строк с максимальной длиной 80...

Проверка без учета регистра
Доброго времени суток! Есть строка string codtext=&quot;МАША&quot;,codkey=&quot;маша&quot;; Как проверить: if (codtext==codkey) { cout &lt;&lt;...

Найти подстроку в строке без учета регистра
Подскажите как найти подстроку в строке без учета регистра, а также без regex? Необходимо также иметь возможность искать после...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru