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

Кодировка вывода в консоль - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
30.07.2011, 20:42     Кодировка вывода в консоль #1
Здравствуйте, у меня Windows Xp sp 3, не подскажите кодировку вывода на консоль русского текста, текст выводит системное приложение rasdial.exe, которое используется для подключение интернета
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2011, 20:42     Кодировка вывода в консоль
Посмотрите здесь:

Перегрузка оператора вывода на консоль для шаблонного класса C++
Кодировка ввода и вывода C++
C++ Не могу разобраться с чтением файла и последующего вывода в консоль
C++ Нужен подходящий символ кружка для вывода в консоль
Ошибка вывода на консоль C++
C++ Кодировка ввода вывода консоли под кириллицу и латиницу
C++ Нет вывода в консоль
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
31.07.2011, 11:24     Кодировка вывода в консоль #2
Руссифицировать консоль можно по разному
1-й способ - для С++ и ввода с помощью iostream.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='ё')
            stream<<char(241);
        else if(*ps=='Ё')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
2-й способ применим для Си
C++
1
2
3
4
5
6
7
#include <stdio.h>
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  //
}
Для успешной работы необходимо выставить шрифт консоли на Lusinda Console (скриншот ниже)
3 -й
Использовать функцию CharToOem((LPCTSTR)s_input,s_output);
Вот прототип простенькой функции по печати русского текста
C++
1
2
3
4
5
6
7
8
9
10
void ru_printf(const char * fmt, const char * str)
{
    char chBuf[MAX_PATH];
    if(0 < strlen(str))
    {
        sprintf(chBuf,str);
        CharToOem((LPCTSTR)chBuf,chBuf);
        printf(fmt,chBuf);
    }
}
4 -й использовать функцию setlocale, подробней о ней сдесь http://www.cplusplus.com/reference/c...ale/setlocale/
Миниатюры
Кодировка вывода в консоль  
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.07.2011, 11:32     Кодировка вывода в консоль #3
2-й способ применим для Си
какой же это Си?сдесь windows.h нужен, а не stdio.h
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
31.07.2011, 11:43  [ТС]     Кодировка вывода в консоль #4
Да мне вообще немножко наоборот надо - у меня прога на Qt написана, я в ней запускаю процесс rasdial.exe с аргументами и пытаюсь найти кодировку чтобы расшифровать что процесс вывел
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,485
31.07.2011, 22:03     Кодировка вывода в консоль #5
Запускай следом cmd.exe и в нем пребирай кодировку, через chcp.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
01.08.2011, 01:32     Кодировка вывода в консоль #6
Кстати, что касается шрифта Lucida Console рекомендую залезть в реестр и поменять там что-то, какой-то ключ. Тогда у всякого создаваемого консольного окна будет такой шрифт.

Подробности я подзабыл. Ищутся в инете на раз.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9384 / 5434 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
01.08.2011, 05:54     Кодировка вывода в консоль #7
Цитата Сообщение от kravam Посмотреть сообщение
рекомендую залезть в реестр и поменять там что-то...
... А лучше удалить всё к чёртовой бабушке
На самом деле всё проще: когда в настройках шрифт/размер/цвет меняешь, там галка есть - сохранить настройки для текущего окна, или всегда cmd с такими настройками запускать.

Цитата Сообщение от hepr Посмотреть сообщение
у меня прога на Qt написана
Вообще-то лучше бы кодировкой в самой программе заморочиться. В Qt для этого специальный метод tr предусмотрен, документацию почитайте...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2011, 15:28     Кодировка вывода в консоль
Еще ссылки по теме:

Кодировка символов при выводе в консоль. C++
C++ Преобразование цикла для вывода на консоль
C++ Закрывается консоль сразу после вывода результата
C++ Неожиданное поведение программы: вместо вывода суммы чисел, на консоль всё время выводится ноль (цикл while)
C++ Как узнать кодировку вывода в консоль во время выполнения программы?

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
01.08.2011, 15:28     Кодировка вывода в консоль #8
easybudda, без ёрничанья
Ели ты галку поставишь, то максимум, чего ты добьёшься, это что с таким шрифтом будут запускаться окна С ТАКИМ ЖЕ ИМЕНЕМ.
Но никак не все окна в системе. А поправишь реестр- будут все.
У меня каждый мало-мальский отдельный проект начинается в новой папке и имя у него уникальное. Ток что вот.
Yandex
Объявления
01.08.2011, 15:28     Кодировка вывода в консоль
Ответ Создать тему
Опции темы

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