С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

При вводе значения переменной типа string или char кириллицей всегда выдает кракозябры.
setlocale помогает только для вывода (cout,printf работают безотказно).
Ничего не нашел полезного в гугле, везде либо предлагают изменить раскладку на досовскую 866 (работает до первого сохранения .срр файла), либо какие то сложные и непонятные функции. Как лечить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2013, 17:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод кириллицы в С++ (C++):

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

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

Организовать ввод кириллицы в массив - C++
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <conio.h> #define sz2 20 int _tmain(int argc, _TCHAR*...

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

Ввод/вывод кириллицы через консоль - C++
Вот простейший пример ввода и вывода слова(символа) через консоль # include <iostream> # include <locale> using namespace std; ...

Вывод кириллицы - C++
каким компилятором лучше пользоваться.я пользуюсь dev c++, но он в консоле не отображает все что написаное в скобках(тольуо на англиском...

28
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.08.2013, 17:44 #2
в списке важных тема висит же Русские шрифты в консоли
0
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");
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2013, 17:45 #4
Странное поведение смены кодировки
0
reisal78
677 / 589 / 139
Регистрация: 28.04.2013
Сообщений: 1,678
15.08.2013, 17:46 #5
Для Windows:

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

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

Добавлено через 57 секунд
Установка шрифта Lucida Console
0
reisal78
677 / 589 / 139
Регистрация: 28.04.2013
Сообщений: 1,678
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
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
15.08.2013, 21:28  [ТС] #12
reisal78, не помогает. Те же кракозябры.
0
zer0mail
2379 / 2010 / 200
Регистрация: 03.07.2012
Сообщений: 7,253
Записей в блоге: 1
15.08.2013, 22:51 #13
Если интересно, можно почитать проблемы кодировок и ввод/вывод здесь: http://zelserg.livejournal.com/2117.html
0
Nuclear_Razor
49 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 104
Записей в блоге: 1
Завершенные тесты: 1
15.08.2013, 23:13 #14
А это не поможет, используя wcout/wcin ?

C++
1
setlocale(LC_CTYPE,".866");
0
Nuclear_Razor
49 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 104
Записей в блоге: 1
Завершенные тесты: 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
15.08.2013, 23:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2013, 23:45
Привет! Вот еще темы с ответами:

Сортировка кириллицы - C++
Может кто-то сталкивался? Код может быть и системозависмый, не критично. Неудачная попытка есть. Может кто покажет как перегрузить оператор...

Обработка кириллицы - C++
Всем доброго времени суток. Мне бы хотелось попросить помощи. Собственно, есть одна программа, которая подсчитывает встречаемость каждого...

Считывание кириллицы - C++
Подскажите, пожалуйста, как считывать кириллицу из массива символов, чтобы функция ниже заработала (если заменить символы на кириллицу) ...

Некорректный вывод кириллицы - C++
при выводе текста на русском, выводит символы типа:&lt;,&gt;,смайлики и тому подобное. код: int main () { setlocale(LC_ALL, &quot;RUS&quot;); ...


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

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

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