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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 21:10     Строку в нижний регистр #1
вводится русская строка (слово ) кодировка 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 перевести все равно нужно будет
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.11.2012, 21:22     Строку в нижний регистр #2
Цитата Сообщение от RESTY Посмотреть сообщение
работает если строке изначально присвоить какое то значение при вводе своей строки выдает иероглифы...
Ввод с клавиатуры сохраняется в кодировке ОЕМ 866. setlocale не предназначена для смены кодовых страниц. Используйте OemToChar\CharToOem либо меняйте кодовую страницу для консоли ( допустим system("chcp 1251"); ).
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 21:40  [ТС]     Строку в нижний регистр #3
спасибо щас попробую

Добавлено через 10 минут
сменил кодовую страницу для консоли результата нет
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.11.2012, 21:42     Строку в нижний регистр #4
Цитата Сообщение от RESTY Посмотреть сообщение
сменил кодовую страницу для консоли результата нет
Каким образом?
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 21:50  [ТС]     Строку в нижний регистр #5
Цитата Сообщение от kazak Посмотреть сообщение
Каким образом?
перед выводом вставил system("chcp 1251")
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.11.2012, 22:21     Строку в нижний регистр #6
Цитата Сообщение от RESTY Посмотреть сообщение
перед выводом вставил system("chcp 1251")
Перед выводом? Это нужно делать в начале программы.
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 22:27  [ТС]     Строку в нижний регистр #7
поставил в начало эффект тот же может пример кода приведете?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
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;
}
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 22:34  [ТС]     Строку в нижний регистр #9
компилировать и запускать не про бывали?) много интересного увидите
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.11.2012, 22:37     Строку в нижний регистр #10
Строку в нижний регистр
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 22:40  [ТС]     Строку в нижний регистр #11
у меня не билдер а студия 2012 в ней вместо текущая кодовая страница пишет ерунду
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.11.2012, 22:43     Строку в нижний регистр #12
Правый клик на заголовке окна консоли -> "Свойства" -> Вкладка "Шрифт" -> установить Lucida Console
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
04.11.2012, 22:51  [ТС]     Строку в нижний регистр #13
ну не суть у меня вместо текущая кодовая страница пишет бред...
мне же что нужно у меня выше фрагмент моей программы необходимо что бы можно было просто вводить свою строку и чтобы выводило понятное русское слово

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

Добавлено через 1 минуту
еще такой вопрос эту надпись текущая кодовая страница можно как то убрать?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.11.2012, 22:52     Строку в нижний регистр #14
C++
1
std::system("chcp 1251 >> null");
alsav22
5282 / 4801 / 442
Регистрация: 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() работает на русских буквах?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2012, 05:00     Строку в нижний регистр
Еще ссылки по теме:

C++ Верхний и нижний регистр
C++ Перевод в нижний регистр
Русские символы в нижний регистр в С++ (debian) C++

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

Или воспользуйтесь поиском по форуму:
RESTY
5 / 5 / 0
Регистрация: 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() работает на русских буквах?
да все норм только проблема есть с буквой ё
Yandex
Объявления
05.11.2012, 05:00     Строку в нижний регистр
Ответ Создать тему
Опции темы

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