Киррилица В Консоли

  • Автор темы AcTiV
  • Дата начала
A

AcTiV

Гость
#1
общий вопрос, почему я ввожу нормально текст, а он выводится абракадаброй

скрин (на скрине же и исходник)
 
R

rrrFer

Гость
#2
прочитай про setlocale
гуглить можно "cplusplus locale"
 
A

AcTiV

Гость
#3
покопался в нете и нашел ответ

добавляем в библиотеку

C++:
#include <windows.h>
это пихаем в main()

C++:
SetConsoleCP(1251); // Ввод с консоли в кодировке 1251
SetConsoleOutputCP(1251); // Вывод на консоль в кодировке 1251. Нужно только будет изменить шрифт консоли на Lucida Console или Consolas

после этого что у вас там за исходник мне не гадать, наводим мышкой на свойства и вкладка шрифт


думаю после этого вы найдете где изменить шрифт на Lucida Console или Consolas
 

alekssgor

Well-Known Member
26.05.2008
118
0
#5
общий вопрос, почему я ввожу нормально текст, а он выводится абракадаброй

скрин (на скрине же и исходник)
У меня сама Windows 7 каракули выводит в CMD например при выполнении команды nslookup!!!
Вот функция для кириллицы с одним исключением работает в C++Builder, в DEV- C++ выдаёт ошибку при компиляции!!!
В принципе для консольного разницы нет что там что там занимает 500 кб
Код:
#include <cstdlib>
#include <iostream>

using namespace std;
char* rus(char* st)
{
unsigned char* p = st; // Ошибка преобразования типов в DEV-C++ выдаёт ошибку!!!
/* при обьявлении символов как char русские буквы
кодируются отрицательными числами */
while(*p)
{
if(*p >= 192)//здесь русская буква
if(*p <= 239) // А,Б, ... Я,а,б, ... п
*p -= 64;
else // р ... я
*p -= 16;
p++;
}
return st;
}
int main(int argc, char *argv[])
{
cout<<rus("Проверка");
system("PAUSE");
return EXIT_SUCCESS;
}

В C++ Builder
Вариант 1
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop

#include <tchar.h>

char* rus(char* st); //Преобразует ANSI-строку в строку ASCII
//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
printf(rus("\nДля продолжения нажмите любую клавишу..."));
getch();
return 0;
}
//---------------------------------------------------------------------------
char* rus(char* st)
{
unsigned char* p = (unsigned char*)st;
while(*p)
{
if(*p >= 192)
if(*p <= 239)
*p -= 64;
else
*p -= 16;
p++;
}
return st;
}
//---------------------------------------------------------------------------
Вариант 2
#include <vcl.h>
#include <conio.h>
#include <cstdlib.h>
#include <iostream.h>
#pragma hdrstop

#include <tchar.h>

char* rus(char* st); //Преобразует ANSI-строку в строку ASCII
//----------------------------------------------------------------------------------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
cout<<rus("\nДля продолжения нажмите любую клавишу...");
getch();
return 0;
}
//----------------------------------------------------------------------------------------------------------------------------------------------------
char* rus(char* st)
{
unsigned char* p = (unsigned char*)st;
while(*p)
{
if(*p >= 192)
if(*p <= 239)
*p -= 64;
else
*p -= 16;
p++;
}
return st;
}
 

SergKappa

New Member
05.04.2008
4
0
#6
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
char outch[256];
CharToOem("Для продолжения нажмите любую клавишу...", outch);
cout << outch;
getch();
return 0;
}
//---------------------------------------------------------------------------