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

Ввод кириллицы в С++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
15.08.2013, 17:42     Ввод кириллицы в С++ #1
При вводе значения переменной типа string или char кириллицей всегда выдает кракозябры.
setlocale помогает только для вывода (cout,printf работают безотказно).
Ничего не нашел полезного в гугле, везде либо предлагают изменить раскладку на досовскую 866 (работает до первого сохранения .срр файла), либо какие то сложные и непонятные функции. Как лечить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2013, 17:42     Ввод кириллицы в С++
Посмотрите здесь:

Поиск кириллицы в строке. C++
C++ Вывод кириллицы
C++ Обработка кириллицы
C++ Перевод с кириллицы на русский
C++ Запись кириллицы в массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
15.08.2013, 17:44     Ввод кириллицы в С++ #2
в списке важных тема висит же Русские шрифты в консоли
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
15.08.2013, 17:45     Ввод кириллицы в С++ #3
А так?
C++
1
2
3
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(LC_ALL,"rus");
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2013, 17:45     Ввод кириллицы в С++ #4
Странное поведение смены кодировки
reisal78
 Аватар для reisal78
603 / 516 / 119
Регистрация: 28.04.2013
Сообщений: 1,451
15.08.2013, 17:46     Ввод кириллицы в С++ #5
Для Windows:

C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Необходимо:

C++
1
#include <windows.h>
Поидее так
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2013, 17:46     Ввод кириллицы в С++ #6
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
А так?
А про Lucida Console где?
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
15.08.2013, 17:56  [ТС]     Ввод кириллицы в С++ #7
Цитата Сообщение от reisal78 Посмотреть сообщение
Для Windows:

C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Необходимо:

C++
1
#include <windows.h>
Поидее так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <windows.h>
 
using std::cout; using std::cin; using std::endl;
using std::string;
 
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
int main()
{   
    setlocale(0,"russian");
    string name, food;
    cout << "Введите ваше имя: ";
    getline(cin,name);
    cout << "Введите ваше любимое блюдо: ";
    getline(cin,food);
    cout << "Мы приготовили для вас, уважаемый " << name;
    cout << ", вкуснейшее блюдо - " << food <<". Рады стараться!";
    cin >> food;
}
Не работает
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
15.08.2013, 18:00     Ввод кириллицы в С++ #8
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Не работает
Не помешало бы знать, что 8-9 строки не вызывают функции.
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
15.08.2013, 18:03  [ТС]     Ввод кириллицы в С++ #9
Цитата Сообщение от Tulosba Посмотреть сообщение
Не помешало бы знать, что 8-9 строки не вызывают функции.
Спасибо за информацию, но и внутри функции майн не работает
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2013, 18:06     Ввод кириллицы в С++ #10
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Не работает
Цитата Сообщение от alsav22 Посмотреть сообщение
А про Lucida Console где?
Странное поведение смены кодировки

Добавлено через 57 секунд
Установка шрифта Lucida Console
reisal78
 Аватар для reisal78
603 / 516 / 119
Регистрация: 28.04.2013
Сообщений: 1,451
15.08.2013, 19:39     Ввод кириллицы в С++ #11
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
#include <iostream>
#include <string>
#include <windows.h>
 
using std::cout; using std::cin; using std::endl;
using std::string;
 
 
 
int main()
{setlocale(LC_ALL,"");
 
 
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    string name, food;
    cout << "Введите ваше имя: ";
    getline(cin,name);
    cout << "Введите ваше любимое блюдо: ";
    getline(cin,food);
    cout << "Мы приготовили для вас, уважаемый " << name;
    cout << ", вкуснейшее блюдо - " << food <<". Рады стараться!";
    cin >> food;
    return 0;
}
... и правой кнопкой по заголовку окна консоли Свойства -> Шрифты -> Lucida Console
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
15.08.2013, 21:28  [ТС]     Ввод кириллицы в С++ #12
reisal78, не помогает. Те же кракозябры.
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,665
Записей в блоге: 1
15.08.2013, 22:51     Ввод кириллицы в С++ #13
Если интересно, можно почитать проблемы кодировок и ввод/вывод здесь: http://zelserg.livejournal.com/2117.html
Nuclear_Razor
49 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 103
Записей в блоге: 1
15.08.2013, 23:13     Ввод кириллицы в С++ #14
А это не поможет, используя wcout/wcin ?

C++
1
setlocale(LC_CTYPE,".866");
Nuclear_Razor
49 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 103
Записей в блоге: 1
15.08.2013, 23:45     Ввод кириллицы в С++ #15
Есть еще стандартный способ:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//ваши хэдэры
#include <iostream>
 
using namespace std:
 
int main()
{
   setlocale (LC_ALL, "rus");
 
   //вывод на экран
 
   return 0;
}
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,665
Записей в блоге: 1
15.08.2013, 23:58     Ввод кириллицы в С++ #16
Есть, но по ссылке выше я показываю, что в нем "не так" и к каким проблемам это приводит. Не то, что проблемы неразрешимы, просто надо выбрать способ, а простого и универсального способа я не знаю. Если кто знает, поделитесь.
Nuclear_Razor
49 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 103
Записей в блоге: 1
16.08.2013, 00:06     Ввод кириллицы в С++ #17
zer0mail,

хм, наверное тут нужно что-то с буфером обмена делать.
Я имею ввиду, создать массив типа char, в который сначала будет забиваться введенна строка, а потом будет происходить вывод на экран. Просто нужно сделать отдельные массивы на каждый пункт ввода. Я не настаиваю на своем методе, просто пока это первое, что в голову пришло.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 687
16.08.2013, 00:30     Ввод кириллицы в С++ #18
Шрифт меняли в свойствах cmd окна? Компилятор у вас какой?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.08.2013, 00:35     Ввод кириллицы в С++ #19
CHELOVEKPAUK, среда какая, ОС какая? Как настройки шрифта в консоли делаете? Как .exe запускаете? Скрин покажите с выводом этого кода и что вводите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2013, 01:42     Ввод кириллицы в С++
Еще ссылки по теме:

Сортировка кириллицы C++
Ввод кириллицы в консоли C++
C++ Ввод/вывод кириллицы через консоль

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

Или воспользуйтесь поиском по форуму:
Dragokas
Автор FAQ
 Аватар для Dragokas
14527 / 6354 / 785
Регистрация: 25.12.2011
Сообщений: 9,896
Записей в блоге: 14
16.08.2013, 01:42     Ввод кириллицы в С++ #20
CHELOVEKPAUK, а в стандартных диалогах Windows с русским текстом проблем нет?
Yandex
Объявления
16.08.2013, 01:42     Ввод кириллицы в С++
Ответ Создать тему
Опции темы

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