Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/140: Рейтинг темы: голосов - 140, средняя оценка - 4.96
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
1

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

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

Author24 — интернет-сервис помощи студентам
При вводе значения переменной типа string или char кириллицей всегда выдает кракозябры.
setlocale помогает только для вывода (cout,printf работают безотказно).
Ничего не нашел полезного в гугле, везде либо предлагают изменить раскладку на досовскую 866 (работает до первого сохранения .срр файла), либо какие то сложные и непонятные функции. Как лечить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2013, 17:42
Ответы с готовыми решениями:

Ввод/вывод кириллицы
Здравствуйте. Ситуация такая. Я ввожу/вывожу символьный массив подобным образом: char a; cin >>...

Ввод кириллицы в консоли
Есть задание создать некоторую базу. Базу эту можно дописывать. Но возникает проблема ввода...

Организовать ввод кириллицы в массив
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <conio.h> #define sz2 20 ...

Ввод/вывод кириллицы через консоль
Вот простейший пример ввода и вывода слова(символа) через консоль # include <iostream> #...

28
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.08.2013, 17:44 2
в списке важных тема висит же Русские шрифты в консоли
0
138 / 130 / 59
Регистрация: 13.12.2012
Сообщений: 293
15.08.2013, 17:45 3
А так?
C++
1
2
3
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(LC_ALL,"rus");
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2013, 17:45 4
Странное поведение смены кодировки
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
15.08.2013, 17:46 5
Для Windows:

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

C++
1
#include <windows.h>
Поидее так
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2013, 17:46 6
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
А так?
А про Lucida Console где?
0
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;
}
Не работает
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.08.2013, 18:00 8
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Не работает
Не помешало бы знать, что 8-9 строки не вызывают функции.
0
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
15.08.2013, 18:03  [ТС] 9
Цитата Сообщение от Tulosba Посмотреть сообщение
Не помешало бы знать, что 8-9 строки не вызывают функции.
Спасибо за информацию, но и внутри функции майн не работает
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2013, 18:06 10
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Не работает
Цитата Сообщение от alsav22 Посмотреть сообщение
А про Lucida Console где?
Странное поведение смены кодировки

Добавлено через 57 секунд
Установка шрифта Lucida Console
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
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
0
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
15.08.2013, 21:28  [ТС] 12
reisal78, не помогает. Те же кракозябры.
0
2664 / 2239 / 240
Регистрация: 03.07.2012
Сообщений: 8,141
Записей в блоге: 1
15.08.2013, 22:51 13
Если интересно, можно почитать проблемы кодировок и ввод/вывод здесь: http://zelserg.livejournal.com/2117.html
0
50 / 3 / 0
Регистрация: 22.07.2012
Сообщений: 104
Записей в блоге: 1
15.08.2013, 23:13 14
А это не поможет, используя wcout/wcin ?

C++
1
setlocale(LC_CTYPE,".866");
0
50 / 3 / 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;
}
0
2664 / 2239 / 240
Регистрация: 03.07.2012
Сообщений: 8,141
Записей в блоге: 1
15.08.2013, 23:58 16
Есть, но по ссылке выше я показываю, что в нем "не так" и к каким проблемам это приводит. Не то, что проблемы неразрешимы, просто надо выбрать способ, а простого и универсального способа я не знаю. Если кто знает, поделитесь.
0
50 / 3 / 0
Регистрация: 22.07.2012
Сообщений: 104
Записей в блоге: 1
16.08.2013, 00:06 17
zer0mail,

хм, наверное тут нужно что-то с буфером обмена делать.
Я имею ввиду, создать массив типа char, в который сначала будет забиваться введенна строка, а потом будет происходить вывод на экран. Просто нужно сделать отдельные массивы на каждый пункт ввода. Я не настаиваю на своем методе, просто пока это первое, что в голову пришло.
0
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
16.08.2013, 00:30 18
Шрифт меняли в свойствах cmd окна? Компилятор у вас какой?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.08.2013, 00:35 19
CHELOVEKPAUK, среда какая, ОС какая? Как настройки шрифта в консоли делаете? Как .exe запускаете? Скрин покажите с выводом этого кода и что вводите.
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
16.08.2013, 01:42 20
CHELOVEKPAUK, а в стандартных диалогах Windows с русским текстом проблем нет?
0
16.08.2013, 01:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2013, 01:42
Помогаю со студенческими работами здесь

Ввод в строки и вывод в консоль кириллицы
Есть программа для подсчета количества букв в введенной строке,но если вводить строку на Русском...

Кодировки кириллицы: CP866, Windows-1251, ввод/вывод
Доброго времени суток! Помогите, пожалуйста, разобраться с кодировками. Каким образом в одном...

Ввод в структуру кириллицы
Русский буквы в программе выдаёт нормально, а при вводе их в структуру -- непонятные символы. Как...

Ввод кириллицы с клавиатуры
Добрый день, уважаемые форумчане! Вопрос мой касается ввода русских букв с клавиатуры. Дело в том,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru