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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
#1

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

15.08.2013, 17:42. Просмотров 1371. Ответов 28
Метки нет (Все метки)

При вводе значения переменной типа string или char кириллицей всегда выдает кракозябры.
setlocale помогает только для вывода (cout,printf работают безотказно).
Ничего не нашел полезного в гугле, везде либо предлагают изменить раскладку на досовскую 866 (работает до первого сохранения .срр файла), либо какие то сложные и непонятные функции. Как лечить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4384 / 3227 / 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
5411 / 4807 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2013, 17:45     Ввод кириллицы в С++ #4
Странное поведение смены кодировки
reisal78
 Аватар для reisal78
611 / 524 / 122
Регистрация: 28.04.2013
Сообщений: 1,486
15.08.2013, 17:46     Ввод кириллицы в С++ #5
Для Windows:

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

C++
1
#include <windows.h>
Поидее так
alsav22
5411 / 4807 / 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
:)
Эксперт С++
4384 / 3227 / 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
5411 / 4807 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2013, 18:06     Ввод кириллицы в С++ #10
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Не работает
Цитата Сообщение от alsav22 Посмотреть сообщение
А про Lucida Console где?
Странное поведение смены кодировки

Добавлено через 57 секунд
Установка шрифта Lucida Console
reisal78
 Аватар для reisal78
611 / 524 / 122
Регистрация: 28.04.2013
Сообщений: 1,486
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
2309 / 1935 / 192
Регистрация: 03.07.2012
Сообщений: 6,938
Записей в блоге: 1
15.08.2013, 22:51     Ввод кириллицы в С++ #13
Если интересно, можно почитать проблемы кодировок и ввод/вывод здесь: http://zelserg.livejournal.com/2117.html
Nuclear_Razor
49 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 104
Записей в блоге: 1
15.08.2013, 23:13     Ввод кириллицы в С++ #14
А это не поможет, используя wcout/wcin ?

C++
1
setlocale(LC_CTYPE,".866");
Nuclear_Razor
49 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 104
Записей в блоге: 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
2309 / 1935 / 192
Регистрация: 03.07.2012
Сообщений: 6,938
Записей в блоге: 1
15.08.2013, 23:58     Ввод кириллицы в С++ #16
Есть, но по ссылке выше я показываю, что в нем "не так" и к каким проблемам это приводит. Не то, что проблемы неразрешимы, просто надо выбрать способ, а простого и универсального способа я не знаю. Если кто знает, поделитесь.
Nuclear_Razor
49 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 104
Записей в блоге: 1
16.08.2013, 00:06     Ввод кириллицы в С++ #17
zer0mail,

хм, наверное тут нужно что-то с буфером обмена делать.
Я имею ввиду, создать массив типа char, в который сначала будет забиваться введенна строка, а потом будет происходить вывод на экран. Просто нужно сделать отдельные массивы на каждый пункт ввода. Я не настаиваю на своем методе, просто пока это первое, что в голову пришло.
Bend3r
 Аватар для Bend3r
148 / 135 / 18
Регистрация: 29.07.2012
Сообщений: 709
16.08.2013, 00:30     Ввод кириллицы в С++ #18
Шрифт меняли в свойствах cmd окна? Компилятор у вас какой?
alsav22
5411 / 4807 / 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++
Что-то с поддержкой кириллицы C++
Считывание кириллицы C++

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

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

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