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

Упрощенная консольная графика и кодировка символов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
01.03.2012, 15:39     Упрощенная консольная графика и кодировка символов #1
Всем привет! Сразу к делу!
У Лфоре есть листинг программы horse.cpp. Так вот вродебы нащел листинг программы, нужные библиотеки для Microsoft компилятора... Но сталкнулся с такой проблемой как кодировка символов.
Проблема в функции "putch"!Эта функция как то своеобразно выводит символы, а точнее не так как мне нужно.Мне нужен символ в кодировке ANSI под номером '\xDD' и '\xB3'.
Я попробовал вывести таблицу ASCII с помощью cout и putch и обнаружил что они разные так вот вопрос ПОЧЕМУ ТАК ПРОИЗХОДИТ? И что с этим делать?Может быть я скачал кривые библиотеку msoftcon.h. Если нужно я могу выложить код библиотеки как и всего листинка Лафоре.

Добавлено через 18 минут
Да и ещё. Подскажите как вернуть в исходное состояние то что изменяет setlocale(LC_ALL,"Russian")?

Добавлено через 5 часов 39 минут
как с помощью setlocale() вызвать таблицу ascii - кодов ibm
 Комментарий модератора 
4.3 Избегайте использования CAPS LOCK при написании текстов сообщений.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 15:39     Упрощенная консольная графика и кодировка символов
Посмотрите здесь:

C++ кодировка символов в С++
C++ кодировка символов
C++ Консольная графика
Консольная графика в Ubuntu C++
C++ консольная графика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.03.2012, 16:57     Упрощенная консольная графика и кодировка символов #2
Цитата Сообщение от stawerfar Посмотреть сообщение
Да и ещё. Подскажите как вернуть в исходное состояние то что изменяет setlocale(LC_ALL,"Russian")?
C
1
setlocale(LC_ALL, "C")
Цитата Сообщение от stawerfar Посмотреть сообщение
как с помощью setlocale() вызвать таблицу ascii - кодов ibm
никак
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
01.03.2012, 17:49  [ТС]     Упрощенная консольная графика и кодировка символов #3
Спасибо что хоть кто то ответил. Но я естественно не ждал и уже нашёл в другом месте.Но всёравно спасибо!Ну а поповоду Вашего ответа
Цитата Сообщение от Nameless One Посмотреть сообщение
setlocale(LC_ALL, "C")
Не работает, покрайней мере в Visual Studio 2010 точно не работает.

setlocale(LC_ALL,"russian_Russia.866");вызывает таблицу ASCII кодов IBM
Для проверки
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
30
31
#include<iostream>
void show_ANSII(void);//прототип
int main(void)
{
    //Показываю стандартную кодировку IBM-866
    show_ANSII();
    //Изменение кодировки для вывода Русскоко языка
    setlocale(LC_ALL,"Russian_Russia.1251");
    std::cout<<"Русский языка работает!";
    //Вывод на экран изменненой таблицы ASCII
    show_ANSII();
    //Возврат на исходную 
    setlocale(LC_ALL,"Russian_Russia.866");
    //Показываю стандартную кодировку IBM-866
    show_ANSII();
    system("Pause");
return 0;
}
//для вывода на экран таблицы ANSII
void show_ANSII(void)
{
    for(int i=0;i<255;i++)
    {
        std::cout<<char(i)<<' ';
        if(i!=0&&(i%20==0||i%100==0))
        {std::cout<<std::endl;}
    }
    std::cout<<std::endl;
    std::cout<<std::endl;
    std::cout<<std::endl;
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.03.2012, 17:52     Упрощенная консольная графика и кодировка символов #4
Цитата Сообщение от stawerfar Посмотреть сообщение
Не работает, покрайней мере в Visual Studio 2010 точно не работает.
в чем это выражается?

Цитата Сообщение от stawerfar Посмотреть сообщение
setlocale(LC_ALL,"russian_Russia.866");вызывает таблицу ASCII кодов IBM
ну так это не «setlocale вызывает», это ты сам ее распечатал
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
01.03.2012, 17:55  [ТС]     Упрощенная консольная графика и кодировка символов #5
Цитата Сообщение от Nameless One Посмотреть сообщение
в чем это выражается?
Ну яже код написал скопируй если сейчас есть где запустить и посмотри что произходит.

Добавлено через 1 минуту
Цитата Сообщение от Nameless One Посмотреть сообщение
ну так это не «setlocale вызывает», это ты сам ее распечатал
Я изначально имел введу не вывод с помощью setlocale а изменения в таблице. Впрочем это моя оплошность. Правильно сказать - правильно понять. Конфуций.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.03.2012, 18:26     Упрощенная консольная графика и кодировка символов #6
Цитата Сообщение от stawerfar Посмотреть сообщение
Ну яже код написал скопируй если сейчас есть где запустить и посмотри что произходит.
у меня система эту локаль не поддерживает ☺
Покажи, что выдает код:
C++
1
std::cout << setlocale(LC_ALL, NULL) << std::endl;
В самом начале функции main. Он должен выдать название локали, которая установлена при запуске программы. Должен выдать C
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
01.03.2012, 18:47  [ТС]     Упрощенная консольная графика и кодировка символов #7
Мне сейчас не совсем удобно показывать. Но я проверял и точно могу сказать что setlocale(LC_ALL,"")
выводит таблицу ANSII для Russian_Russia.1251. Но если не использовать setlocale вообще то выводит ANSII
Russian_Russia.866. Да кстати я до сих пор тут ни разу скрины не прикреплял не подскажешь как здесь это делается?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2012, 18:55     Упрощенная консольная графика и кодировка символов
Еще ссылки по теме:

C++ Консольная графика
Консольная графика С++ C++
C++ Консольная "графика", игра "Тетрис". Фигуры перестают прорисовываться на определенном этапе

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.03.2012, 18:55     Упрощенная консольная графика и кодировка символов #8
Цитата Сообщение от stawerfar Посмотреть сообщение
Мне сейчас не совсем удобно показывать. Но я проверял и точно могу сказать что setlocale(LC_ALL,"")
выводит таблицу ANSII для Russian_Russia.1251
нет, я хочу узнать, какое возвращаемое значение функции setlocale для первого вызова setlocale(LC_ALL, "").

Цитата Сообщение от stawerfar Посмотреть сообщение
Но я проверял и точно могу сказать что setlocale(LC_ALL,"")
выводит таблицу ANSII для Russian_Russia.1251. Но если не использовать setlocale вообще то выводит ANSII
Russian_Russia.866
кодовая страница консоли — 866, кодовая страница винды — 1251.

Цитата Сообщение от stawerfar Посмотреть сообщение
Да кстати я до сих пор тут ни разу скрины не прикреплял не подскажешь как здесь это делается?
Расширенный режим → Значок скрепки → Дальше, думаю, сам разберешься. Ну и памятка не зря придумана
Yandex
Объявления
01.03.2012, 18:55     Упрощенная консольная графика и кодировка символов
Ответ Создать тему
Опции темы

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