Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

31.07.2012, 18:43. Просмотров 1671. Ответов 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]);
        }
Подскажите.

Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2012, 18:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Понижение регистра в строке (C++):

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

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

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

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

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

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

8
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++;
    }
}
1
Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
31.07.2012, 19:32  [ТС] #3
Спасибо, но мне необходимо для string
0
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
31.07.2012, 20:12 #4
Пробовали использовать towupper вместо toupper?
1
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,199
Завершенные тесты: 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()
            )
        );
}
1
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()
            )
        );
}
Спасибо, но мне только от одного вида плохо стало
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
31.07.2012, 20:39 #7
http://liveworkspace.org/code/e221c1d334746862fb893e776db9090e
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;
}
1
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
, подскажите?
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
31.07.2012, 22:11 #9
Holsteng, вам в настройках проекта нужно ковырятся -
кодировку символов смотретьпреобразовать wchar_t [255] в const TCHAR []
1
31.07.2012, 22:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2012, 22:11
Привет! Вот еще темы с ответами:

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

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

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

В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра - C++
9. В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра. help


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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