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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
#1

Понижение регистра в строке - C++

31.07.2012, 18:43. Просмотров 1550. Ответов 8
Метки нет (Все метки)

Всем привет!

Не могу понизить регистр в строке. Использовал функции towupper, towlower, не помогло. Мне это нужно для сравнения строк. Пошел другим путем использовал _tcsicmp, _wcsicmp, чтобы сравнить две строки без регистра, тоже не работает.

C
1
2
3
4
5
6
7
8
wstring namestreet;
for ( size_t i = 0; i < namestreet.length(); ++i )
        {
            if (i == 0)
                namestreet[i] = toupper(namestreet[i]);
            else
            namestreet[i] = tolower(namestreet[i]);
        }
Подскажите.

Заранее благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2012, 18:43     Понижение регистра в строке
Посмотрите здесь:

Понижение регистра в тексте, считанном из файла - C++
Нужно считать текст из файла, понизить в нём регистр и перезаписать в этот же файл.

Функция преобразует буквы верхнего регистра в строке s в буквы нижнего регистра - C++
Задание: strlwr char *strlwr( char *s); Функция преобразует буквы верхнего регистра в строке s в буквы нижнего регистра. P.S....

Заменить все буквы нижнего регистра в строке на буквы верхнего регистра - C++
Определить функцию, заменяющую все буквы нижнего регистра в строке на буквы верхнего регистра.

Изменение регистра в строке - C++
Есть список фамилий, если фамилия введена с маленькой буквы, то исправить на заглавную. Использовал функцию toupper, но она работала...

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

Поиск слов в строке без учета регистра - C++
В общем пока только один вопрос (позже возможно еще возникнут) : Я сам написал функцию для поиска слов в строке, но ейе не хватает снятия...

Разместить слова в строке в прямом алфавитном порядке без учета регистра - C++
Ввести предложение с клавиатуры и разместить его слова в прямом алфавитном порядке без учета регистра литеральных символов. Для...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
31.07.2012, 19:05     Понижение регистра в строке #2
Вот сравнение строк
C++
1
2
3
4
5
6
7
8
9
10
int Compare(char *str1, char *str2){
    while(*str1 && *str2){
        if(toupper(*str1) != toupper(*str2)) break;
        str1++; str2++;
    }
        
    if(toupper(*str1) == toupper(*str2)) return 0;
    else if(toupper(*str1) > toupper(*str2)) return 1;
    else return -1;
}
Добавлено через 1 минуту
Вот так можно понизить регистр

void DownReg(char *str){
while(*str){
*str = tolower(*str);
str++;
}
}

Добавлено через 17 секунд
C++
1
2
3
4
5
6
void DownReg(char *str){
    while(*str){
        *str = tolower(*str);
        str++;
    }
}
Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
31.07.2012, 19:32  [ТС]     Понижение регистра в строке #3
Спасибо, но мне необходимо для string
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
31.07.2012, 20:12     Понижение регистра в строке #4
Пробовали использовать towupper вместо toupper?
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
31.07.2012, 20:21     Понижение регистра в строке #5
C++
1
2
3
4
5
6
7
8
9
10
template <class StringT>
void StrToLower(StringT& s)
{
    std::transform(
        s.begin(), s.end(), s.begin(),
        std::bind(
            std::tolower<typename StringT::value_type>, std::placeholders::_1, std::locale()
            )
        );
}
Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
31.07.2012, 20:29  [ТС]     Понижение регистра в строке #6
Цитата Сообщение от Dr.Urban Посмотреть сообщение
Пробовали использовать towupper вместо toupper?
Да, использовал, это я уже пробовал разные варианты

Добавлено через 1 минуту
Цитата Сообщение от Somebody Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
template <class StringT>
void StrToLower(StringT& s)
{
    std::transform(
        s.begin(), s.end(), s.begin(),
        std::bind(
            std::tolower<typename StringT::value_type>, std::placeholders::_1, std::locale()
            )
        );
}
Спасибо, но мне только от одного вида плохо стало
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
31.07.2012, 20:39     Понижение регистра в строке #7
http://liveworkspace.org/code/e221c1...893e776db9090e
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <locale>
 
int main()
{
   std::wstring namestreet = L"hELLO";
   namestreet[ 0 ] = towupper( namestreet[ 0 ] );
   std::wstring::iterator it;
for( 
     it = namestreet.begin() + 1;
     it != namestreet.end(); it++   
   )
     {
       *it = towlower( *it );
     }
     std::wcout << namestreet;
     
  return 0;
}
Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
31.07.2012, 21:14  [ТС]     Понижение регистра в строке #8
C
1
2
3
4
5
6
7
8
9
bool CableTV::CheckUnical( wstring namestreet, int id)
{
     namestreet = L"hELLO";
   namestreet[ 0 ] = towupper( namestreet[ 0 ] );
   std::wstring::iterator registr;
    for( registr = namestreet.begin() + 1; registr != namestreet.end(); ++registr   )
     
       *registr = towlower( *registr );
}
Когда присваиваю
C
1
L"hELLO"
в
C
1
namestreet
все работает, но когда в
C
1
namestreet
приходит
C
1
TCHAR namestreet[50];
не работает, может у меня
C
1
ANSI
, подскажите?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2012, 22:11     Понижение регистра в строке
Еще ссылки по теме:

Понижение приоритета процесса - C++
народ помогите найти работающий код понижения приоритета процесса . нужен приоритет как в диспетчере задач -низкий

Понижение загрузки ЦП, используя Sleep (1) - C++
Не сильно мудрёная программа заметно грузит ресурсы процессора. Возможные точки нагрузки: 1) Программа запускается посредством...

Считывание регистра - C++
Имеется программа-переводчик с английского на русский. Словарь реализован в виде txt файла куда занесены пары англ.слово_русский перевод....

Отмена регистра - C++
Нужно ввести строку без учета регистра(ПрИвЕт = привет и.д.)или сравнить без регистра Помогите пожалуйста

Сравнение регистра - C++
Здравствуйте, помогите решить такую проблему: поставлена задача: вычислить значение определенного выражения, через оператор, вбиваемый с...


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

Или воспользуйтесь поиском по форуму:
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
31.07.2012, 22:11     Понижение регистра в строке #9
Holsteng, вам в настройках проекта нужно ковырятся -
кодировку символов смотретьпреобразовать wchar_t [255] в const TCHAR []
Yandex
Объявления
31.07.2012, 22:11     Понижение регистра в строке
Ответ Создать тему
Опции темы

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