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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.67
LedZeppelin
7 / 7 / 0
Регистрация: 19.04.2011
Сообщений: 68
#1

Неправильный вывод кириллицы в консоль - C++

07.05.2011, 17:13. Просмотров 5003. Ответов 20
Метки нет (Все метки)

Здравствуйте уважаемые форумчане. Нуждаюсь в Вашем совете. Моя программа(ка ) выводит в консоль вместо кирилицы непонятные символы. При этом в файл все выводится как надо.
Что необходимо сделать что бы это исправить?

Не по теме:

такие действия как:SetConsoleCP(1251), SetConsoleOutputCP(1251);setlocale(LC_ALL,"Rus"); пробовал, не помогает

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

Неправильный вывод кириллицы в строках, заданных с консоли - C++
Добрый день! Вот не как не могу доделать до конца программу, буду рад если поможете! Вот код исходный, набираю код в VS 12 ultimate. в...

Вывод кириллицы в консоль - C++
Привет, как изменить код что-бы выводилась русская "б" вместо иероглифов? SetConsoleCP(1251); SetConsoleOutputCP(1251); тоже не...

Вывод кириллицы в консоль - C++
Все правильно написал , сделал. #include <iostream> #include <windows.h> #include <string> using namespace std; struct elem { ...

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

Ввод/вывод кириллицы через консоль - C++
Вот простейший пример ввода и вывода слова(символа) через консоль # include <iostream> # include <locale> using namespace std; ...

Можно ли как-то осуществить вывод кириллицы в консоль, не используя Lucida Console - C++
Собственно сабж в заголовке. Есть способ оставить стандартный Consolas?

20
LedZeppelin
7 / 7 / 0
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:40  [ТС] #16
Цитата Сообщение от diagon Посмотреть сообщение
Вышеприведенный текст в кодировке oem, возможно вы что-то неправильно делаете...
И это стоит использовать только при выводе на консоль, в файле такой текст будет нечитаемым.
В файл как раз выводит по человечески, но мне необходимо так же в консоль.
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.05.2011, 18:43 #17
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <windows.h>
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
 }
int main()  {
    std::cout << Rus("Хелло ворлд")<< endl;
    return 0;
}
0
LedZeppelin
7 / 7 / 0
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:45  [ТС] #18
diagon, Я сделал точно также. Но...
0
CVB
99 / 90 / 19
Регистрация: 22.03.2011
Сообщений: 226
08.10.2011, 19:20 #19
Цитата Сообщение от dan_strong Посмотреть сообщение
прописывешь библиотеку <windows.h>, в мэйне пишешь: SetConsoleCP(1251); SetConsoleOutputCP(1251);
потом в свойствах командной строки выбери шрифт Lucida Console. должно помочь
Все работает! У меня начальная проблема была иная, но вконце стала такой как ваша(вывод кирилицы в консоли)... вот ссылка на мой топик http://www.cyberforum.ru/cpp-beginne...ml#post2052056
0
Виктор_Сен
33 / 26 / 1
Регистрация: 01.08.2011
Сообщений: 176
08.10.2011, 19:55 #20
Я так решал эту проблему: добавляешь #include <iostream> и using namespace std; в исходный код, потом переопределяешь оператор вывода в поток:
C++
1
2
3
4
5
6
7
8
9
10
11
ostream &operator<<(ostream &stream, const char *str)
{
    char *outStr=new char[strlen(str)+1];
    CharToOemA(str,outStr);
    for (int i=0; outStr[i]!=0; i++)
    {
        stream<<outStr[i];
    }   
    delete[]outStr;
    return stream;
}
и выводишь, например, так: cout<<"Привет, мир!";

Добавлено через 6 минут
Да, ещё чуть не забыл, нужно добавить #include <windows.h> и #pragma comment(lib,"user32.lib")

Добавлено через 34 секунды
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
// MyOutStr.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <iostream>
#include <windows.h>
 
#pragma comment(lib,"user32.lib")
 
using namespace System;
using namespace std;
 
ostream &operator<<(ostream &stream, const char *str)
{
    char *outStr=new char[strlen(str)+1];
    CharToOemA(str,outStr);
    for (int i=0; outStr[i]!=0; i++)
    {
        stream<<outStr[i];
    }   
    delete[]outStr;
    return stream;
}
 
 
int main(array<System::String ^> ^args)
{
    cout<<"Привет, мир!";
    system("pause");
    return 0;
}
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
08.10.2011, 20:10 #21
Цитата Сообщение от LedZeppelin Посмотреть сообщение
такие действия как:SetConsoleCP(1251), SetConsoleOutputCP(1251);setlocale(LC_ALL,"Rus"); пробовал, не помогает
Пишите в программе:
C++
1
SetConsoleCP(1251), SetConsoleOutputCP(1251);
Запускаете программу, нажимаете ПКМ по консоли именно в верхней части консоли, где пишется адрес программы и находятся кнопки выключить, свернуть и т.д.
Дальше выбираете "свойства" и выбираете шрифт Lucida Console.
Теперь по идее должны выводится русские буквы.
1
08.10.2011, 20:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2011, 20:10
Привет! Вот еще темы с ответами:

Вывод кириллицы - C++
каким компилятором лучше пользоваться.я пользуюсь dev c++, но он в консоле не отображает все что написаное в скобках(тольуо на англиском...

Ввод/вывод кириллицы - C++
Здравствуйте. Ситуация такая. Я ввожу/вывожу символьный массив подобным образом: char a; cin &gt;&gt; a; cout &lt;&lt; a; С латиницей...

Некорректный вывод кириллицы - C++
при выводе текста на русском, выводит символы типа:&lt;,&gt;,смайлики и тому подобное. код: int main () { setlocale(LC_ALL, &quot;RUS&quot;); ...

Неправильный вывод - C++
При x = 0 или x = 1 должен выводиться текст &quot;Нет значений&quot;. При вводе шага(dx) если он имеет 2 знака после запятой, то все нормально....


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

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

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