Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
RESTY
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
#1

Строку в нижний регистр

04.11.2012, 21:10. Просмотров 1642. Ответов 15
Метки нет (Все метки)

вводится русская строка (слово ) кодировка 1251, необходимо привести ее к нижнему регистру
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <ctype.h>
#include <locale.h>
#include <string>
#include <iostream>
#include <algorithm>
 
 
int main (){
    setlocale (LC_ALL, "");
 
    std::string str = "ПРИВЕТ";
    //std::cin >> str;
    //std::cout << str << std::endl;
    transform (str.begin (), str.end (), str.begin (), ::tolower);
    std::cout << str << std::endl;
    
 
    system("pause");
    return 0;
}

работает если строке изначально присвоить какое то значение при вводе своей строки выдает иероглифы...
помогите пжл
можно сделать через char только потом в string перевести все равно нужно будет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 21:10
Ответы с готовыми решениями:

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

Перевод в нижний регистр
Приветствую . Прошу помощи , выдаёт ошибку при переводе в нижний регистр , в...

Перевод в нижний регистр
Есть строка стринг в которой записана кириллица, нужно перевести ее в нижний...

Преобразование в нижний регистр
Здравствуйте! Почему это не работает (результат неизменен): #include...

Верхний и нижний регистр
Напишите программу, которая читает клавиатурный ввод до символа @ и ...

15
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
04.11.2012, 21:22 #2
Цитата Сообщение от RESTY Посмотреть сообщение
работает если строке изначально присвоить какое то значение при вводе своей строки выдает иероглифы...
Ввод с клавиатуры сохраняется в кодировке ОЕМ 866. setlocale не предназначена для смены кодовых страниц. Используйте OemToChar\CharToOem либо меняйте кодовую страницу для консоли ( допустим system("chcp 1251"); ).
0
RESTY
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 21:40  [ТС] #3
спасибо щас попробую

Добавлено через 10 минут
сменил кодовую страницу для консоли результата нет
0
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
04.11.2012, 21:42 #4
Цитата Сообщение от RESTY Посмотреть сообщение
сменил кодовую страницу для консоли результата нет
Каким образом?
0
RESTY
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 21:50  [ТС] #5
Цитата Сообщение от kazak Посмотреть сообщение
Каким образом?
перед выводом вставил system("chcp 1251")
0
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
04.11.2012, 22:21 #6
Цитата Сообщение от RESTY Посмотреть сообщение
перед выводом вставил system("chcp 1251")
Перед выводом? Это нужно делать в начале программы.
0
RESTY
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 22:27  [ТС] #7
поставил в начало эффект тот же может пример кода приведете?
0
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
04.11.2012, 22:31 #8
C++
1
2
3
4
5
6
7
8
9
10
11
int main (){
    std::system("chcp 1251");
 
    std::string str;
 
    std::cin >> str;
    std::cout << str << std::endl;
 
    std::system("pause");
    return 0;
}
0
RESTY
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 22:34  [ТС] #9
компилировать и запускать не про бывали?) много интересного увидите
0
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
04.11.2012, 22:37 #10
Строку в нижний регистр
0
RESTY
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 22:40  [ТС] #11
у меня не билдер а студия 2012 в ней вместо текущая кодовая страница пишет ерунду
0
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
04.11.2012, 22:43 #12
Правый клик на заголовке окна консоли -> "Свойства" -> Вкладка "Шрифт" -> установить Lucida Console
1
RESTY
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 22:51  [ТС] #13
ну не суть у меня вместо текущая кодовая страница пишет бред...
мне же что нужно у меня выше фрагмент моей программы необходимо что бы можно было просто вводить свою строку и чтобы выводило понятное русское слово

Добавлено через 3 минуты
Цитата Сообщение от kazak Посмотреть сообщение
Правый клик на заголовке окна консоли -> "Свойства" -> Вкладка "Шрифт" -> установить Lucida Console
прости не заметил все получилось как нужно) извиняй за вынос мозга если что

Добавлено через 1 минуту
еще такой вопрос эту надпись текущая кодовая страница можно как то убрать?
0
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
04.11.2012, 22:52 #14
C++
1
std::system("chcp 1251 >> null");
1
alsav22
5439 / 4834 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.11.2012, 23:33 #15
C++
1
2
3
4
5
6
7
8
#include <windows.h>
...
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
...
}
В ствойствах консоли выбрать шрифт: Lucida Console.

Добавлено через 4 минуты
Цитата Сообщение от RESTY Посмотреть сообщение
работает если строке изначально присвоить какое то значение
И tolower() работает на русских буквах?
0
RESTY
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
05.11.2012, 05:00  [ТС] #16
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
#include <windows.h>
...
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
...
}
В ствойствах консоли выбрать шрифт: Lucida Console.

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

И tolower() работает на русских буквах?
да все норм только проблема есть с буквой ё
0
05.11.2012, 05:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2012, 05:00

Верхний и нижний регистр буквы
#include &lt;cctype&gt; #include &lt;iostream&gt; int main() { using namespace...

Перевод букв в нижний регистр
Как перевести все буквы строки введенной с клавиатуры в нижний регистр?

Строки в С++. Верхний и нижний регистр
char alphabet; int i; char letter; for(letter='A',i=0;letter&lt;='Z';...


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

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

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