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

Принятие русского шрифта в консоли - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Yashman
 Аватар для Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
24.08.2011, 20:40     Принятие русского шрифта в консоли #1
Здрасте! Я написал програму, которая должна использовать русский шрифт, но она его не распознает. Для того, что бы она отображала русский текст, я добавил команду
C++
1
setlocale( LC_ALL,"Russian" );
но программа не способна воспринимать кирилицу, то есть если запустить такую программу:
C++
1
2
3
4
5
6
...
cout << "введите ваше имя: ";
char name[20];
cin.getline(name, 20);
cout << "Вас зовут: " << name;
..
и написать имя русскими буквами, то вот, что получится:
введите ваше имя: Яшман
Вас зовут: ?и┐

Как это исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2011, 20:40     Принятие русского шрифта в консоли
Посмотрите здесь:

C++ Изменение размеров и шрифта консоли
Цвет шрифта и фона в консоли... C++
C++ Альтернативный способ русского шрифта?
C++ Вывод русского текста в консоли
кодировка русского шрифта C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
24.08.2011, 20:46     Принятие русского шрифта в консоли #2
Русские шрифты в консоли
Yashman
 Аватар для Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
24.08.2011, 21:07  [ТС]     Принятие русского шрифта в консоли #3
Там нет ничего полезного для меня, потому как о принятии русского шрифта там ничего не говорится
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
24.08.2011, 22:31     Принятие русского шрифта в консоли #4
Не пробовали ?
C++
1
 locale::global(locale("rus"));
Добавлено через 1 минуту
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Можно ещё

Добавлено через 2 минуты
Ну или так

C++
1
2
std::locale loc("Russian");
std::locale::global(loc);
Добавлено через 2 минуты
Ну или вот так:
lang.h
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
#include <windows.h>
char* Rus(const char* text);
 
char bufRus[256];
char* Rus(const char* text)
{
   CharToOem(text, bufRus);
   return bufRus;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
#include <iostream.h>
#include <conio.h>
#include "russian.h" // Нужно подключить
void main()
{
  cout<<" Добро пожаловать в мир программирования"<<endl;
 
  getch();
}
Oleg_SK
5 / 5 / 2
Регистрация: 15.09.2010
Сообщений: 25
25.08.2011, 03:08     Принятие русского шрифта в консоли #5
Цитата Сообщение от Yashman Посмотреть сообщение
Как это исправить?
Недавно сталкивался с аналогичной проблемой (правда, я с ней столкнулся не при работе с со строками в стиле языка C, а при использовании объектов класса wstring). Вот мой топик: Непонятка с кодировкой , я там приводил один из вариантов решения этой проблемы... Вкратце, решение в том, что нужно выводить заданные в программе строки в одной кодировке, а cтроки введенные в ответ на запрос программы - в другой кодировке. Например:
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
28
29
#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>
 
using std::wstring;
using std::getline;
using std::wcout;
using std::wcin;
using std::endl;
 
int _tmain(int argc, _TCHAR* argv[])
{
        wstring c;
 
        setlocale( LC_ALL, "russian_Russia.1251" );
        wcout << L"Тест_1" << endl;
 
        setlocale(LC_ALL, "russian_Russia.866");
        getline(wcin,c);
        wcout << c << endl;
        
        setlocale( LC_ALL, "russian_Russia.1251" );
        wcout << L"Тест_2" << endl;
 
        wcout << endl;
        system("PAUSE");
        return 0;
}
Добавлено через 41 минуту
Yashman
В общем, твой код нужно изменить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
        ...
    setlocale( LC_ALL,"Russian" );
    cout << "введите ваше имя: ";
    
    char name[20];
    cin.getline(name, 20);
    
    cout << "Вас зовут: ";
 
    setlocale(LC_ALL, "russian_Russia.866");
    cout << name;
        ...
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
25.08.2011, 03:54     Принятие русского шрифта в консоли #6
Тебе нужно изменить шрифт в консоли на Lucia, если и это не поможет то читай информацию по wchar.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2011, 15:43     Принятие русского шрифта в консоли
Еще ссылки по теме:

C++ Установка шрифта консоли и размера символов
В консоли вместо русского языка выводятся вопросительные знаки C++
C++ Размер шрифта в консоли

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

Или воспользуйтесь поиском по форуму:
Yashman
 Аватар для Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
25.08.2011, 15:43  [ТС]     Принятие русского шрифта в консоли #7
Спасибо всем, кто не оставляет друга в беде! Отдельное спасибо Oleg_SK, по-моему самый удобный способ.
Yandex
Объявления
25.08.2011, 15:43     Принятие русского шрифта в консоли
Ответ Создать тему
Опции темы

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