• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

AcTiV

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

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

rrrFer

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

AcTiV

покопался в нете и нашел ответ

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

C++:
#include <windows.h>

это пихаем в main()

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


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


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

alekssgor

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

скрин (на скрине же и исходник)
У меня сама 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;
}
 
S

SergKappa

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

#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;
}
//---------------------------------------------------------------------------
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!