36 / 36 / 3
Регистрация: 17.07.2008
Сообщений: 581

Русские шрифты в консоли

02.08.2008, 16:35. Показов 619634. Ответов 60
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как написать сообщение с русскими буквами, чтоб нормально показывала? Например:
cout<<"hello world"; выводить сообщение нормальна? с английсками шрифтами
cout<<"привет мир"; выводить в каком не понятном языке, какие та закавычки.

Подобные темы:
24
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.08.2008, 16:35
Ответы с готовыми решениями:

Русские шрифты в консоли - продолжение
Всем привет. Я вижу(и прочитал) прилепленную тему на верху, но ответа на свой ньюанс не нашел. Есть такая программа, написанная на...

Очередные русские шрифты в консоли...
Помогите пожалуйста) вот код: #include &lt;iostream&gt; #include &quot;windows.h&quot; using namespace std; int (void) { ...

Как заставить консоль понимать русский язык? (русские шрифты в консоли)
Добрый вечер. Нужна ваша помощь С++ не понимает русский язык

60
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,890
17.07.2009, 23:18
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Alex M Посмотреть сообщение
мммм, это наверное из за того что в одном проекта я создал функции в отдельных файлах
и к ним прописаны #include "rus.h", как избижать этой ошибки?

C++
1
2
3
4
5
6
7
8
9
10
11
12
файл rus.h
 
#include<iostream>
#include<math.h>
#include<windows.h>
 
char bufRus[600];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Проект
1-файл
#include <iostream>
#include "rus.h"
 
2-файл функции
#include<iostream>
#include "buyAmmo.h"
#include "rus.h"
 
3-файл фунции
#include<iostream>
#include "cityMap.h"
#include "rus.h"
и возникает ошибка...
В header файле лучше чтобы присутсвовали не сами функции, а их прототипы.

Файл rus.c
C++
1
2
3
4
5
6
7
8
9
#include <windows.h>
// прочие инклуды
char bufRus[600];
 
char* Rus(const char* text)
{
      CharToOem(text, bufRus);
      return bufRus;
}
Если тебе нужно использовать bufRus в других модулях программы, то объявляй его так
C++
1
extern char bufRus[600];
так ты сообщаешь компилятору, что массив bufRus уже объявлен где-то в другом модуле.

Если тебе нужно где-то еще использовать функцию char* Rus(const char* text),
создай например, файл rus.h, и объяви там прототип функции:
C++
1
2
3
4
5
6
#ifndef _RUS_H_
#define _RUS_H_
 
char* Rus(const char* text);
 
#endif
Теперь в любом модуле, где ты хочешь использовать функцию Rus, в разделе include нужно будет писать:
C++
1
#include "rus.h"
А вообще, использовать одну глобальную переменную в нескольких модулях это не есть хороший программерский прием. Почитай книжки (могу посоветовать Герберта Шилдта "Полный справочник по C", там очень хорошо описана раздельная компиляция).
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
06.08.2009, 15:45
локализацию я считаю самым простым и удобным способом. К тому же универсальным
0
0 / 0 / 0
Регистрация: 06.08.2009
Сообщений: 4
06.08.2009, 15:52
Спасибо за setlocale( LC_ALL,"Russian" );могу выводить по-русски но вот не задача-как по-русски ВВОДИТЬ??????????Если я пропишу
Код C++1 2
C++
1
2
3
4
5
6
while(ch!='н')
{
...
cout<<"Хотите выйти(д/н)?";
cin>>ch;
}
то по нажатии на 'н' цикл не прекратится,компилятор читает английский шрифт.как быть?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
06.08.2009, 16:34
это проблемы IO доса. Дело в том, что при выводе на экран символ "н" имеет код 173, а вот при вводе уже -83. Если надо чтобы эта программа заработала не меняя код, то вместо "н" вводи "э"
0
0 / 0 / 0
Регистрация: 06.08.2009
Сообщений: 4
06.08.2009, 17:00
M128K145,
объясни пж..та ,83 и 173-это коды для символов 'н' и 'э' в ASCII или я че та путаю?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
06.08.2009, 17:16
по таблице ASCII код символа "н" = 173. При вводе его в консоль его код получается -83.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
12.08.2009, 19:14
Ребята зацените
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function _Rus(s:String):String;
var i:integer;
    _s:String;
begin
_s:=s;
for i:=1 to length(s) do  begin
case ord(s[i]) of
192..239: _s[i]:=chr(ord(s[i])-64);
240..255: _s[i]:=chr(ord(s[i])-16);
168: _s[i]:=chr(240);
184: _s[i]:=chr(241);
  end;
end;
 _Rus:=_s;
end;
Жду отзыв, что здесь можно исправить.
0
0 / 0 / 0
Регистрация: 06.08.2009
Сообщений: 4
14.08.2009, 12:22
возможно я ошибаюсь,ибо с делфой даже не на вы,может этот код выводит на экран один символ,когда юзер вводит совсем другой,или я ошибаюсь?
кто-нить,плиз,напишите такую фишку на с++
0
2 / 2 / 0
Регистрация: 30.04.2009
Сообщений: 27
21.08.2009, 11:23
Я для себя решила этот вопрос с помощью классов, разработанных Павловской и Щупаком, специально для их учебников. Подключаем через обычный include и спокойно работаем.
Кому нужно, файлы см. ниже.
Вложения
Тип файла: rar class_cyrios.rar (2.5 Кб, 1293 просмотров)
2
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
21.08.2009, 15:32
А можно как-то проверить скорость работы? Через GetTime() наверно?

Добавлено через 1 минуту 8 секунд
И функции
Delphi
1
chr
и
Delphi
1
ord
быстро работают?
0
0 / 0 / 0
Регистрация: 06.08.2009
Сообщений: 4
22.08.2009, 12:48
у меня и без <locale.h> катит

Добавлено через 39 минут 12 секунд
[b]Biblio[/
спасибо за файл,но не разобраться куда его пихать(MS Visual Studio 2005)
0
RootSpy
07.09.2009, 18:39
ну дык нужно библиотеку подключить #include <russian.h>
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
07.09.2009, 18:44
Цитата Сообщение от RootSpy Посмотреть сообщение
ну дык нужно библиотеку подключить #include <russian.h>
Нету такой библиотеки в С++
0
RootSpy
07.09.2009, 18:46
Цитата Сообщение от ISergey Посмотреть сообщение
Нету такой библиотеки в С++
Я конечно спорить не буду. Но мне препод говорил, что она существует)))))))
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
07.09.2009, 22:28
Цитата Сообщение от RootSpy Посмотреть сообщение
Я конечно спорить не буду. Но мне препод говорил, что она существует
она может и сущесвует, но самописная.
1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
13.09.2009, 21:24
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
она может и сущесвует, но самописная.
Именно. Содержимое russian.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;
}
И не забываем включать заголовочный файл в программу. Приблизительный пример.
C++
1
2
3
4
5
6
7
8
9
#include <iostream.h>
#include <conio.h>
#include "russian.h"
void main()
{
  cout<<" Добро пожаловать в мир программирования"<<endl;
 
  getch();
}
Можно ещё открыть файл .cpp в AkelPad'e и пересохранить его в кодировке OEM (866).

Или такой вариант с CharToOemA

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <windows.h>
using namespace std;
 
char* convert(char* str)
{
   char* s;
   CharToOemA(str, s); // Функция и конвертация.
   return s;
}
 
int main()
{
   cout<<convert("Привет Мир!!!");
   cin.get();
   
   return 0;
}
Цитата Сообщение от TheKnyazz Посмотреть сообщение
Эта байда работает норм вроде в любом компиляторе, но замеченны бока при использовании в циклах, хз почему появляются кракозябры на 2+ итерации.
ЗЫ, ф-цию нагло спер не помню где.
Ссылки на другие форумы запрещены правилами.

А вот по поводу боков, то, да, мне самому хотелось бы узнать, отчего при втором проходе(итерации) некоторые символы не кодируются?
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
13.09.2009, 22:22
Цитата Сообщение от Maestrino Посмотреть сообщение
Вот здесь.
Ознакомся с правилами форума. Размещать ссылки на другие форумы - запрещено (Пункт 3.7).
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
14.09.2009, 03:25
Цитата Сообщение от Maestrino Посмотреть сообщение
она может и сущесвует, но самописная.
Именно. Содержимое russian.h
Плохой пример.. кстати найдите разницу между функциями CharToOemA, CharToOemW и макросом - CharToOem
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
14.09.2009, 10:33
Цитата Сообщение от ISergey Посмотреть сообщение
кстати найдите разницу между функциями CharToOemA, CharToOemW
Первая - версия ANSI, вторая - версия Unicode.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12841 / 7590 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
14.09.2009, 14:50
Цитата Сообщение от Maestrino Посмотреть сообщение
char* convert(char* str) {
char* s;
CharToOemA(str, s); // Функция и конвертация.
return s; }
Так не будет работать (ну не должно бы по крайней мере) - память под *s нигде не выделяется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.09.2009, 14:50
Помогаю со студенческими работами здесь

Русские шрифты в c++
Работаем в Visual Studio 2010. В char переменную пишем информацию русскими символами, сохраняем, записываем в файл, читаем из файла и...

Чтения из файла Русские шрифты
Не могу не как догнать перепробовал много вариантов не получается ,помогите разобраться. ...

Значения переменных - русские шрифты
Здравствуйте, такая проблема: Как сделать так чтобы если я создал string tmp = &quot;й,ц,у,К,Е,Н,г,Ш,щ&quot;; то чтобы и работало с русскими...

Русские буквы консоли
Знаю что таких тембыло очень много, но у меня никак не получается вывести слово &quot;Привет&quot; в консоли. Пробую так ...

Русские буквы в консоли
У меня прекрастно выводятся русские буквы в консоль, но если я ввожу русский текст в какуюту переменную, то вывести ее коректно не...


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

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

Новые блоги и статьи
Безопасное программирование в Java и предотвращение уязвимостей (SQL-инъекции, XSS и др.)
Javaican 19.05.2025
Самые распространёные векторы атак на Java-приложения за последний год выглядят как классический "топ-3 хакерских фаворитов": SQL-инъекции (31%), межсайтовый скриптинг или XSS (28%) и CSRF-атаки. . .
Введение в Q# - язык квантовых вычислений от Microsoft
EggHead 19.05.2025
Microsoft вошла в гонку технологических гигантов с собственным языком программирования Q#, специально созданным для разработки квантовых алгоритмов. Но прежде чем погружаться в синтаксические дебри. . .
Безопасность Kubernetes с Falco и обнаружение вторжений
Mr. Docker 18.05.2025
Переход организаций к микросервисной архитектуре и контейнерным технологиям сопровождается лавинообразным ростом векторов атак — от тривиальных попыток взлома до многоступенчатых кибератак, способных. . .
Аугментация изображений с Python
AI_Generated 18.05.2025
Собрать достаточно большой датасет для обучения нейронной сети — та ещё головная боль. Часами вручную размечать картинки, скармливать их ненасытным алгоритмам и молиться, чтобы модель не сдулась при. . .
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru