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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
#1

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

01.03.2012, 15:39. Просмотров 1948. Ответов 7
Метки нет (Все метки)

Всем привет! Сразу к делу!
У Лфоре есть листинг программы 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 при написании текстов сообщений.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 15:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упрощенная консольная графика и кодировка символов (C++):

Консольная графика С++ - C++
Сейчас пишу для экзамена покер на одного игрока. И столкнулся проблемой, при рисовании карт, они у меня рисуются одна под одной и по этому...

Консольная графика - C++
Здравствуйте, я написал этот код в Борланд С++ (пример нашел в книге): #include <graphics.h> #include <stdlib.h> #include <stdio.h> ...

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

консольная графика - C++
Помогите, пожалуйста, с графикой. Не выводит на экран рисунок. # include <graphics.h> # include <conio.h> # include...

Консольная графика. Как подключить <msoftcon>? - C++
В Лафоре есть задание по консольной графике. Я начал недавно, не пинайте сильно. Как подключить &lt;msoftcon&gt;?

Консольная графика - C++
Доброго времени суток!!! Как под DOS рисовать примитивные обьекты линии, квадраты, круги? Для Turbo C++, Но если возможно то для C++...

7
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
01.03.2012, 16:57 #2
Цитата Сообщение от stawerfar Посмотреть сообщение
Да и ещё. Подскажите как вернуть в исходное состояние то что изменяет setlocale(LC_ALL,"Russian")?
C
1
setlocale(LC_ALL, "C")
Цитата Сообщение от stawerfar Посмотреть сообщение
как с помощью setlocale() вызвать таблицу ascii - кодов ibm
никак
1
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;
}
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
01.03.2012, 17:52 #4
Цитата Сообщение от stawerfar Посмотреть сообщение
Не работает, покрайней мере в Visual Studio 2010 точно не работает.
в чем это выражается?

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

Добавлено через 1 минуту
Цитата Сообщение от Nameless One Посмотреть сообщение
ну так это не «setlocale вызывает», это ты сам ее распечатал
Я изначально имел введу не вывод с помощью setlocale а изменения в таблице. Впрочем это моя оплошность. Правильно сказать - правильно понять. Конфуций.
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
01.03.2012, 18:26 #6
Цитата Сообщение от stawerfar Посмотреть сообщение
Ну яже код написал скопируй если сейчас есть где запустить и посмотри что произходит.
у меня система эту локаль не поддерживает ☺
Покажи, что выдает код:
C++
1
std::cout << setlocale(LC_ALL, NULL) << std::endl;
В самом начале функции main. Он должен выдать название локали, которая установлена при запуске программы. Должен выдать C
1
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. Да кстати я до сих пор тут ни разу скрины не прикреплял не подскажешь как здесь это делается?
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
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 Посмотреть сообщение
Да кстати я до сих пор тут ни разу скрины не прикреплял не подскажешь как здесь это делается?
Расширенный режим → Значок скрепки → Дальше, думаю, сам разберешься. Ну и памятка не зря придумана
1
01.03.2012, 18:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2012, 18:55
Привет! Вот еще темы с ответами:

Консольная "графика", игра "Тетрис". Фигуры перестают прорисовываться на определенном этапе - C++
Доброго времени! Написал на днях тетрис (в консоле) с использованием, кажется это называется WinApi. В цикле вызывается функция...

кодировка символов - C++
Всем привет! Столкнулся с такой проблемкой: есть поле unsigned char в него я и ввожу параметр значения, однако необходимо чтобы...

кодировка символов в С++ - C++
получил кода русских символов через такую небольшую прогу: char ch, ch1; int in, in1; ch = 'я'; ch1 = 'А'; in = ch; in1 =...

Кодировка символов в консоли - C++
Напомните ещё один способ установки кодовой страницы в консоли для визуал студии, по крайней мере работающий в ней. В нём кодировка...


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

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

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