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

Тема в разделе "Общие вопросы по С и С++", создана пользователем AcTiV, 26 дек 2012.

  1. AcTiV

    AcTiV Гость

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

    скрин (на скрине же и исходник)
    [​IMG]
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    прочитай про setlocale
    гуглить можно "cplusplus locale"
     
  3. AcTiV

    AcTiV Гость

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

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

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

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

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

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

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    ну да, так тоже можно :)
     
  5. alekssgor

    alekssgor Well-Known Member

    Регистрация:
    26 май 2008
    Сообщения:
    118
    Симпатии:
    0
    У меня сама Windows 7 каракули выводит в CMD например при выполнении команды nslookup!!!
    Вот функция для кириллицы с одним исключением работает в C++Builder, в DEV- C++ выдаёт ошибку при компиляции!!!
    В принципе для консольного разницы нет что там что там занимает 500 кб
    Код (Text):
    #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;
    }
     
  6. SergKappa

    SergKappa New Member

    Регистрация:
    5 апр 2008
    Сообщения:
    4
    Симпатии:
    0
    //---------------------------------------------------------------------------

    #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;
    }
    //---------------------------------------------------------------------------
     
  7. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    SergKappa
    используй теги CODE
     
Загрузка...
Похожие Темы - Киррилица Консоли
  1. Ruslan280
    Ответов:
    3
    Просмотров:
    643
  2. mspSUSE
    Ответов:
    2
    Просмотров:
    900
  3. Gemini
    Ответов:
    10
    Просмотров:
    1.323
  4. DNT
    Ответов:
    13
    Просмотров:
    1.302
  5. SevenReg
    Ответов:
    3
    Просмотров:
    1.350

Поделиться этой страницей