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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.69
Idea_fix
1 / 1 / 0
Регистрация: 13.10.2009
Сообщений: 4
#1

Регистр строки - C++

28.11.2009, 18:46. Просмотров 3245. Ответов 7
Метки нет (Все метки)

Подскажите, пожалуйста, есть ли в с++ функция игнорирования изменения регистра строки (char)?

То есть программа считает слова "Мама" и "мама" как два разных слова, а мне нужно как одно.

Огромное спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
28.11.2009, 18:54     Регистр строки #2
на щет строки чаров не знаю, но есть для строки, вот короче ссылка на функцию, которая переводит строку в нижний регистр, справа там есть весь функционал библиотеки <algorithm> в ней есть еще перевод строки в верхний регистр, но эт уже на твой вкус..

короче переводишь слово в верхний/нижний регистр и делаешь чё надо..
Idea_fix
1 / 1 / 0
Регистрация: 13.10.2009
Сообщений: 4
28.11.2009, 19:20  [ТС]     Регистр строки #3
Где ссылка, прости?
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
28.11.2009, 23:19     Регистр строки #4
"lower_bound() c++" погугли, первая ссылка - то что ты ищешь))
также "algorithm c++"
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
28.11.2009, 23:43     Регистр строки #5
Цитата Сообщение от outoftime Посмотреть сообщение
которая переводит строку в нижний регистр
C
1
2
3
char* strlower(char* str) {
   for (char *p = str; *p; p++) *p = tolower(*p);
}
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
29.11.2009, 08:38     Регистр строки #6
niXman, так ведь си++ нужно))
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
29.11.2009, 11:34     Регистр строки #7
1. Функция lower_bound() не имеет отношения к изменению или игнорированию регистра строки.
2. Почти правильной код привел niXman. Только еще нужно учесть, что функции tolower/toupper должны работать в зависимости от текущего языка строки, поэтому нужно еще установить локаль - setlocale(LC_xxx, "russian" или любую другую на выбор).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2009, 12:13     Регистр строки
Еще ссылки по теме:

Регистр:Автозапуск C++
Не учитывать регистр C++
Преобразование строки сначала в верхний регистр, потом в нижний C++
C++ Все заглавные буквы строки нужно перевести в нижний регистр
Преобразование строки в верхний регистр C++

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

Или воспользуйтесь поиском по форуму:
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
29.11.2009, 12:13     Регистр строки #8
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
32
33
34
35
36
37
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
 
struct compare : public std::binary_function<char,char,bool>
{
    bool operator() (const char a, const char b)
    {
        return toupper(a) == toupper(b);
    }
};
 
int main()
{
    std::string s1("This is a string");
    std::string s2("STRING");
 
    if (s1.size() == s2.size() && std::equal(s1.begin(),s1.end(),s2.begin(),compare()))
    {
        std::cout << "strings are equal" << std::endl;
    }
    else
    {
        std::cout << "the strings are not equal" << std::endl;
    }
    std::string::iterator iter = std::search(s1.begin(),s1.end(),s2.begin(),s2.end(),compare());
    if (iter == s1.end())
    {
        std::cout << "s2 is not substring of s1" << std::endl;
    }
    else
    {
        std::cout << "s2 is substring of s1" << std::endl;
    }
    return 0;
}
вот пример поиска и сравнения строк без учета регистра
Yandex
Объявления
29.11.2009, 12:13     Регистр строки
Ответ Создать тему
Опции темы

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