Среда, 16.07.2025, 01:22
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
.:: Меню ::.
.:: Категории каталога ::.
Разное [5]
Различные темы по программированию
Пакет SWT [4]
Практикуемся в написании оконных приложений на Java
Среды разработки, компиляторы и т.п [3]
Сравнения, описания, плюсы и минусы сред разработки. Сравнение компиляторов.
Java [8]
Объектно-ориентированные соображения.
Си++ [19]
Коротко и ясно
Ассемблер [6]
Машинные коды, побитно :)
Форма входа
.:: Поиск ::.
.:: Дополнительно ::.
    Хостинг от Loqo.ru
             .:: Коментируем ::.
Главная » Статьи » Текстовый материал » Си++

Пожалуй самый грамотный способ вывода кириллицы в консоль
Code
#include <iostream>

bool accept3 ()
{
  int tries=1;
  //используем UNICODE так
  //std::wcout.imbue(std::locale("Russian_russia.OCP"));
  //или так
  std::wcout.imbue(std::locale(".866"));
  while (tries<4)
  {
  std::wcout << L"Будете продолжать ? (y/n) ";
  char answer=0;
  std::cin >> answer;

  switch (answer)
  {
  case 'y':
  return true;
  case 'n':
  return false;
  default:
  std::wcout << L"Извините я Вас не понял.\n";
  tries = tries + 1;
  }
  }
  std::wcout << L"Ответ считается отрицательным.\n";
  return false;
}

int main (void)
{
  accept3();
  system("PAUSE");
   
  return EXIT_SUCCESS;
}

Модифицированный пример из книги Страуструпа (которая лежит здесь)

Вывод производится в Юникоде.
Считаю этот более надёжным, чем конвертация другими методами (например CharToOem) или извращение с кодировками. smile
А ещё проще вот так:

Code

#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <locale.h>
   
int main(int argc ,char * argv [])
{
  setlocale(LC_ALL,"Rus");
// setlocale(LC_ALL,".1251"); так тоже катит

  printf("Хеллоу\n");
  std::cout << "Канает ?" << std::endl;
  getch();
  return 0;
}

Используем setlocale(LC_ALL,"Rus");, если надо.
Не забываем подключить заголовочный файл locale.h !

Хочу напомнить, что при изменении локали изменяются такие вещи как представление формата даты, времени, знаки разделители десятичных дробей и т.п., у меня возникла один раз проблема из-за того, что вместо точек в дробях появились запятые.
Категория: Си++ | Добавил: C0demaker (02.03.2009)
Просмотров: 4758 | Рейтинг: 0.0/0
Всего комментариев: 0

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ant1 © 2025