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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 1970, средняя оценка - 4.82
frech
33 / 33 / 0
Регистрация: 17.07.2008
Сообщений: 562
#1

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

02.08.2008, 16:35. Просмотров 262448. Ответов 58
Метки нет (Все метки)

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

Подобные темы:
22
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2008, 16:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Русские шрифты в консоли (C++):

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

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

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

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

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

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

58
$tudent
4 / 2 / 0
Регистрация: 02.03.2009
Сообщений: 54
06.07.2009, 11:04 #16
В любой нормальной книге написано , что windows - не самая лучшая среда для изучения программирования , g++ всё на русском UTF-8 стоит , писать можно хоть на албанском .
MS-DOS с UTF-8 подружить можно ?
1
interferent
6 / 5 / 0
Регистрация: 15.07.2009
Сообщений: 7
15.07.2009, 04:51 #17
Надо, наверно, сказать явно в чём, собственно, проблема.
Проблема в том, что редактор, в котором набирается программа, и, следовательно, файлы, в которых записан её текст, использует другую кодировку, чем кодировка консоли, в которой печатаются выводимые сообщения.(редактор - codepage 1251, консоль - codepage 866).
Лучшим вариантом было бы чтобы эти кодировки так или иначе совпадали. Это можно сделать путём перенастройки консоли или перенастройки редактора.
Другой метод - хранить используемые программой строки отдельно и перекодировать в нужную кодировку (в версии MS - это, видимо, строковые "ресурсы"; к сожалению, работа с ними несколько сложнее, чем следует) :-(.
Ну и самый простой на мой взгляд метод. Простая перекодировка исходных файлов программ (целиком) в нужную кодировку (codepage 866). К сожалению, MS сделал, похоже, всё, что мог, для усложнения этой задачи. Кто-то тут говорил, что пользуется FAR... :-) Есть одна хорошая UNIX-программа: iconv. Преобразует много кодировок, включая unicode. Читает ввод со стандартного ввода и пишет результат на стандартный вывод :-)
Используется, например, так: iconv -fcp1251 -tcp866 <source.c >source866.c . Затем надо компилировать source866.c .
Может понадобиться ещё и опция -c.
Неплохо будет смотреться небольшой скрипт, перекодирующий (с помощью iconv) все, скажем, .c и .h файлы в заданной директории... :-)
4
Alex M
4 / 4 / 1
Регистрация: 12.07.2009
Сообщений: 18
16.07.2009, 19:06 #18
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include<math.h>
#include<windows.h>
 
char bufRus[600];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
Из за чего может быть ошибка?

Error : data object 'bufRus' redefined
rus.h line 5 char bufRus[600];
0
schdub
2974 / 1319 / 244
Регистрация: 19.01.2009
Сообщений: 3,471
Завершенные тесты: 1
16.07.2009, 19:22 #19
Цитата Сообщение от Alex M Посмотреть сообщение
Error : data object 'bufRus' redefined
rus.h line 5 char bufRus[600];
объект с таким именем уже объявлен - bufRus
0
Alex M
4 / 4 / 1
Регистрация: 12.07.2009
Сообщений: 18
16.07.2009, 19:42 #20
Цитата Сообщение от polivets Посмотреть сообщение
объект с таким именем уже объявлен - bufRus
мммм, это наверное из за того что в одном проекта я создал функции в отдельных файлах
и к ним прописаны #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"
и возникает ошибка...
0
schdub
2974 / 1319 / 244
Регистрация: 19.01.2009
Сообщений: 3,471
Завершенные тесты: 1
17.07.2009, 23:18 #21
Цитата Сообщение от 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
M128K145
Эксперт С++
8309 / 3529 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
06.08.2009, 15:45 #22
локализацию я считаю самым простым и удобным способом. К тому же универсальным
0
kezone
0 / 0 / 0
Регистрация: 06.08.2009
Сообщений: 4
06.08.2009, 15:52 #23
Спасибо за setlocale( LC_ALL,"Russian" );могу выводить по-русски но вот не задача-как по-русски ВВОДИТЬ??????????Если я пропишу
Код C++1 2
C++
1
2
3
4
5
6
while(ch!='н')
{
...
cout<<"Хотите выйти(д/н)?";
cin>>ch;
}
то по нажатии на 'н' цикл не прекратится,компилятор читает английский шрифт.как быть?
0
M128K145
Эксперт С++
8309 / 3529 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
06.08.2009, 16:34 #24
это проблемы IO доса. Дело в том, что при выводе на экран символ "н" имеет код 173, а вот при вводе уже -83. Если надо чтобы эта программа заработала не меняя код, то вместо "н" вводи "э"
0
kezone
0 / 0 / 0
Регистрация: 06.08.2009
Сообщений: 4
06.08.2009, 17:00 #25
M128K145,
объясни пж..та ,83 и 173-это коды для символов 'н' и 'э' в ASCII или я че та путаю?
0
M128K145
Эксперт С++
8309 / 3529 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
06.08.2009, 17:16 #26
по таблице ASCII код символа "н" = 173. При вводе его в консоль его код получается -83.
0
galileopro
Пробующий
184 / 97 / 1
Регистрация: 28.04.2009
Сообщений: 1,040
12.08.2009, 19:14 #27
Ребята зацените
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
kezone
0 / 0 / 0
Регистрация: 06.08.2009
Сообщений: 4
14.08.2009, 12:22 #28
возможно я ошибаюсь,ибо с делфой даже не на вы,может этот код выводит на экран один символ,когда юзер вводит совсем другой,или я ошибаюсь?
кто-нить,плиз,напишите такую фишку на с++
0
Biblio
2 / 2 / 0
Регистрация: 30.04.2009
Сообщений: 27
21.08.2009, 11:23 #29
Я для себя решила этот вопрос с помощью классов, разработанных Павловской и Щупаком, специально для их учебников. Подключаем через обычный include и спокойно работаем.
Кому нужно, файлы см. ниже.
2
Вложения
Тип файла: rar class_cyrios.rar (2.5 Кб, 1215 просмотров)
galileopro
Пробующий
184 / 97 / 1
Регистрация: 28.04.2009
Сообщений: 1,040
21.08.2009, 15:32 #30
А можно как-то проверить скорость работы? Через GetTime() наверно?

Добавлено через 1 минуту 8 секунд
И функции
Delphi
1
chr
и
Delphi
1
ord
быстро работают?
0
21.08.2009, 15:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2009, 15:32
Привет! Вот еще темы с ответами:

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

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

Русские слова в консоли - C++
Здравствуйте,как сделать так что бы в консоли отображались слова setlocale(0,&quot;rus&quot;); я сделала,но вот беда если допустим задать русское...

Считать русские и английские символы с консоли - C++
Собственно как? Нужно читать путь до каталога, который может содержать русские и английские символы. Повсеместно использую wchar_t, читаю...


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

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

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