Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/78: Рейтинг темы: голосов - 78, средняя оценка - 4.58
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
1

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

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

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

Не по теме:

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

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2011, 17:13
Ответы с готовыми решениями:

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

Вывод кириллицы в консоль
Здравствуйте. Вообще-то я занимаюсь явой, но, для общего развития решил освоить кресты....

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

Вывод кириллицы в консоль
Все правильно написал , сделал. #include <iostream> #include <windows.h> #include <string>...

20
90 / 17 / 4
Регистрация: 09.06.2010
Сообщений: 100
07.05.2011, 17:28 2
Попробуй транслитом писать. самый простой вариант
А если очень надо, читай прикреплённые темы про рус буквы. Или жди пока производители IDE добавят возможность кодировки cp866
1
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 17:41  [ТС] 3
Цитата Сообщение от BadBaddak Посмотреть сообщение
Попробуй транслитом писать. самый простой вариант
А если очень надо, читай прикреплённые темы про рус буквы. Или жди пока производители IDE добавят возможность кодировки cp866
Добавят возможность ? Я пользуюсь MinGw, в нем есть такая опция? Насчет транслита, это же не пишу, это мне функция возвращает строку. И почему же в файл выводит нормально ?
0
6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
07.05.2011, 17:56 4
прописывешь библиотеку <windows.h>, в мэйне пишешь: SetConsoleCP(1251); SetConsoleOutputCP(1251);
потом в свойствах командной строки выбери шрифт Lucida Console. должно помочь
1
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 17:59  [ТС] 5
Цитата Сообщение от dan_strong Посмотреть сообщение
прописывешь библиотеку <windows.h>, в мэйне пишешь: SetConsoleCP(1251); SetConsoleOutputCP(1251);
потом в свойствах командной строки выбери шрифт Lucida Console. должно помочь
В моем случае такой вариант не проходит.
1
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
07.05.2011, 18:05 6
Учи английский, пригодится... Ну или уже лучше последуй совету dan_strong! Это уж лучше, чем читать тупой транслит...

Добавлено через 1 минуту
dan_strong, лучше использовать
C++
1
#include <locale>
0
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:10  [ТС] 7
Mиxaил, Не очень Вас понял на счет английского, извините. Прием описаный dan_strong мне известен, но тут он не работает.

Добавлено через 3 минуты
Цитата Сообщение от Mиxaил Посмотреть сообщение
dan_strong, лучше использовать
C++
1
#include <locale>
C++
1
#include <locale>
тоже не помогает.
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
07.05.2011, 18:16 8
в какой среде работаете?
может
C++
1
2
3
    
 
#include <locale.h>
какой - нить
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.05.2011, 18:17 9
А вы просто подключаете и все?) Или ставите нужную локаль?)
0
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:18  [ТС] 10
Mиxaил, Пробовал компилировать в DEV C++, Code::Block, QT, VC++ 2010. Результат везде одинаков.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.05.2011, 18:18 11
C++
1
2
3
4
5
#include <iostream>
int main(){
    std::cout << "•Ґ««® ў®а«¤";
    return 0;
}
Попробуйте скомпилировать
1
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:24  [ТС] 12
Цитата Сообщение от ForEveR Посмотреть сообщение
А вы просто подключаете и все?) Или ставите нужную локаль?)
Вот в таком виде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//....
#include "windows.h"
#include <locale.h>
//.....
 
int main()
{
    //SetConsoleCP(866 );
   // SetConsoleOutputCP(866 );
    //setlocale(LC_ALL,"Rus");
     SetConsoleCP(1251);
    SetConsoleOutputCP(1251 );
    setlocale(LC_ALL,"Rus");
//  .....
}
Добавлено через 3 минуты
Цитата Сообщение от diagon Посмотреть сообщение
C++
1
2
3
4
5
#include <iostream>
int main(){
    std::cout << "•Ґ««® ў®а«¤";
    return 0;
}
Попробуйте скомпилировать
Вывело Хелло ворлд
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.05.2011, 18:25 13
Тогда вам поможет CharToOem
1
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:32  [ТС] 14
diagon, Хм, интересно, сейчас попробую .

Добавлено через 5 минут
Цитата Сообщение от diagon Посмотреть сообщение
Тогда вам поможет CharToOem
Нет не помогло, символы поменялись, но остались нечитаемыми.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.05.2011, 18:37 15
Вышеприведенный текст в кодировке oem, возможно вы что-то неправильно делаете...
И это стоит использовать только при выводе на консоль, в файле такой текст будет нечитаемым.
0
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:40  [ТС] 16
Цитата Сообщение от diagon Посмотреть сообщение
Вышеприведенный текст в кодировке oem, возможно вы что-то неправильно делаете...
И это стоит использовать только при выводе на консоль, в файле такой текст будет нечитаемым.
В файл как раз выводит по человечески, но мне необходимо так же в консоль.
0
Higher
1953 / 1219 / 120
Регистрация: 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
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:45  [ТС] 18
diagon, Я сделал точно также. Но...
0
101 / 92 / 53
Регистрация: 22.03.2011
Сообщений: 226
08.10.2011, 19:20 19
Цитата Сообщение от dan_strong Посмотреть сообщение
прописывешь библиотеку <windows.h>, в мэйне пишешь: SetConsoleCP(1251); SetConsoleOutputCP(1251);
потом в свойствах командной строки выбери шрифт Lucida Console. должно помочь
Все работает! У меня начальная проблема была иная, но вконце стала такой как ваша(вывод кирилицы в консоли)... вот ссылка на мой топик https://www.cyberforum.ru/cpp-... ost2052056
0
36 / 29 / 2
Регистрация: 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
08.10.2011, 19:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2011, 19:55
Помогаю со студенческими работами здесь

Ввод/вывод кириллицы через консоль
Вот простейший пример ввода и вывода слова(символа) через консоль # include &lt;iostream&gt; #...

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

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

Вывод кириллицы в консоль
Начинаю свое обучение и столкнулся с такой бедой. Из-за строки printf(&quot;C Новым годом!\n&quot;);...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru