|
Внимание! Теперь для входа на форум необходимо вводить единый пароль регистрации сервисов sibnet.ru!
Здравствуйте, гость ( Вход | Регистрация )
 Сейчас обсуждают
 
| |
|
  |
Язык Си/С++, вопросы и ответы |
|
|
ktak |
11.10.2008, 1:14
|

Технический специалист
Группа: VIP
Сообщений: 1 354
Регистрация: 18.12.2006
Из: Новосибирск
Пользователь №: 18
Репутация: 124

|
Цитата(Const @ 10.10.2008, 17:24)  Эх... Не всегда... Мы в этом году начали изучать C++, дали нам задания, а теорию даже не объяснили...
Правильный, жизненный, подход, если вас до этого успели на другом языке поучить. Надо решить задачу, решай! Никто тебе в реале не будет объяснять, как что-то делать. Ищи книжки, используй гугл и вперёд. Только так можно научиться.
|
|
|
|
Dickobraz |
13.10.2008, 12:08
|
Молчун
Группа: Sibnet-club
Сообщений: 18
Регистрация: 22.7.2008
Пользователь №: 41 678
Репутация: 0

|
Цитата(Const @ 9.10.2008, 17:05)  А я по-русски писал с помощью собственной функции  Код void printrus(char str[256]) { int i=0; while (str[i]!=0) { if (str[i]>='А'&&str[i]<='п') printf("%c", str[i]+192); else if (str[i]>='р'&&str[i]<='я') printf("%c", str[i]+240); else printf("%c", str[i]); i++; } }
... printrus("Привет!"); ...
А что, никто не читает MSDN: setlocale( LC_ALL, "Russian" ); вот вам и русский в консоли...
|
|
|
|
Dickobraz |
13.10.2008, 18:10
|
Молчун
Группа: Sibnet-club
Сообщений: 18
Регистрация: 22.7.2008
Пользователь №: 41 678
Репутация: 0

|
Цитата(Ktak @ 13.10.2008, 11:20)  Вау! Не знал, что Windows знает про локали. А как в винде посмотреть, что такое "Russian"? Если программа с этим рецептом заработает, то подозреваю, что "Russian" - это алиас для "ru_RU.CP1251"? А трансляция программ через локали в винде работает? А VisualStudio через локали трансляцию делает?
отвечу ссылочно: setlocale (MSDN)
|
|
|
|
КостяМХ |
16.10.2008, 17:20
|

Молчун
Группа: Sibnet-club
Сообщений: 62
Регистрация: 22.9.2008
Пользователь №: 50 743
Репутация: 3

|
Цитата(горынычь @ 16.10.2008, 17:09)  помогите провести кодировку этого числа(23061992) в 16 8 и 2 кодировку.
23061992 = 1010111111110010111101000 в 2-й 23061992 = 127762750 в 8-й 23061992 = 15FF5E8 в 16-й
|
|
|
|
КостяМХ |
16.10.2008, 22:55
|

Молчун
Группа: Sibnet-club
Сообщений: 62
Регистрация: 22.9.2008
Пользователь №: 50 743
Репутация: 3

|
Цитата(mim @ 16.10.2008, 16:50)  Какой Вы компилятор используете, если "Turbo C" то я в нем совершенно не разбираюсь. В нем свои библиотеки, под "DOS", соответственно и дополнительные заголовочные файлы могут быть.
Если компилятор "Visual C++ 6", то можно еще подключить файл "wincon.h" (или "windows.h"). Функция BOOL SetConsoleCP(UINT wCodePageID); устанавливает кодовую страницу ввода.
Посмотри этот файл - "wincon.h" - там много интересного, в "MSDN" все функции подробно описаны, с подробными примерами, оттуда все спиши.
У нас не С++ у нас просто Си среда minGW, если было бы Visual C++ 6 то там проблем бы не было... просто мне уже надоедат всё на ломаном английском строчить, жутко не удобно
|
|
|
|
SiV@N |
16.10.2008, 23:26
|

Болтун
Группа: Программисты
Сообщений: 711
Регистрация: 23.6.2007
Из: Рубцовск
Пользователь №: 609
Репутация: 41

|
Цитата(Ktak @ 13.10.2008, 11:20)  Вау! Не знал, что Windows знает про локали. А как в винде посмотреть, что такое "Russian"? Если программа с этим рецептом заработает, то подозреваю, что "Russian" - это алиас для "ru_RU.CP1251"? А трансляция программ через локали в винде работает? А VisualStudio через локали трансляцию делает?
нет в венде ни каких локалей  я так от проблем с кодировкой в консольных приложениях избавлялся: Код #include <windows.h> SetConsoleCP(1251); SetConsoleOutputCP(1251);
» Спасибо сказали: «
|
|
|
|
Dickobraz |
16.10.2008, 23:59
|
Молчун
Группа: Sibnet-club
Сообщений: 18
Регистрация: 22.7.2008
Пользователь №: 41 678
Репутация: 0

|
Цитата(SiV@N @ 16.10.2008, 22:26)  нет в венде ни каких локалей  я так от проблем с кодировкой в консольных приложениях избавлялся: Код #include <windows.h> SetConsoleCP(1251); SetConsoleOutputCP(1251); это переключает кодовую страницу консоли, setlocale делает конвертацию. это аналог команды chcp Сообщение отредактировал Dickobraz - 17.10.2008, 0:00
|
|
|
|
КостяМХ |
17.10.2008, 0:09
|

Молчун
Группа: Sibnet-club
Сообщений: 62
Регистрация: 22.9.2008
Пользователь №: 50 743
Репутация: 3

|
Цитата(SiV@N @ 16.10.2008, 23:26)  нет в венде ни каких локалей  я так от проблем с кодировкой в консольных приложениях избавлялся: Код #include <windows.h> SetConsoleCP(1251); SetConsoleOutputCP(1251); У меня что то не получается, можешь показать пример простой программы чтобы печатала ПРИВЕТ. Спасибо
|
|
|
|
Dickobraz |
17.10.2008, 12:35
|
Молчун
Группа: Sibnet-club
Сообщений: 18
Регистрация: 22.7.2008
Пользователь №: 41 678
Репутация: 0

|
Цитата(SiV@N @ 17.10.2008, 8:46)  Код ... SetConsoleCP(1251); SetConsoleOutputCP(1251); ...
Так работать не будет если в консольном окне стоит "точечный шрифт", если поставить "Lucida console", то все нормально. Чтоб этим не заморачиваться, пишем так: Код #include <iostream> #include <windows.h>
using namespace std; int main(int argc, char** argv) { setlocale( LC_ALL, "Russian" ); cout >> "Привет"; }
Функция SetConsoleCP устанавливает кодовую страницу ввода, используемую консолью, связанной с вызывающим процессом. Консоль использует свою кодовую страницу ввода, чтобы преобразовывать ввод информации с клавиатуры в соответствующие символьные значения. Функция SetConsoleOutputCP устанавливает кодовую страницу вывода данных, используемую консолью, связанной с вызывающим процессом. Консоль использует свою кодовую страницу вывода данных, чтобы преобразовать символьные значения, написанные различными функциями вывода информации в изображение, показываемое на экране в консольном окне. Кодовая страница преобразует 256 кодов букв в индивидуальные символы. Разные кодовые страницы включают в себя разные специальные символы, обычно настраиваемые для языка или группы языков. Если текущий шрифт - моноширинный шрифт Уникода, функция SetConsoleOutputCP изменяет начертание символьных значений в установку глифов шрифта, а не загружает отдельный шрифт каждый раз, когда он вызывается. Это влияет на образ расширенных символов (значение ASCII больше, чем 127), которые отображаются в консольном окне. Однако, если текущий шрифт является растровым шрифтом, SetConsoleOutputCP не влияет на то, как расширенные символы отображаются.Сообщение отредактировал Dickobraz - 17.10.2008, 12:50
|
|
|
|
|
  |
1 чел. просматривают этот форум (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|