none
Предложение консольного вывода RRS feed

  • Вопрос

  • Сегодня начал изучать Microsoft Visual C++ 2008 Express Edition по книге Г.Шилдта , и у меня такая пролема: в предложении консольного вывода типа
    count<<"Текст";
    если текст набрать на русском то при запуске программы вместо текста появляется какая-то абракадабра, а если на английском то всё нормально. В книге отечественных авторов Г.Довбуш и А.Хомоненко: "Visual C++ на примерах" все предложения на английском, так в чём фишка-то? Спасибо за ответ.
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 0:54 MSDN Forums consolidation (От:Visual Studio - отзывы и пожелания)
    14 июня 2009 г. 21:49

Ответы

  • Фмшка в том, что вводите вы символы в юникоде, но в консоле в связи с её спецификой они выводятся в анси кодировке. Если нет необходимости работать с файлами, то ввод и вывод русских букв проще всего сделать так:
    #include <iostream>
    #include <clocale>
    void main()
    {
    	setlocale(LC_CTYPE, "Russian");
    	std::cout << "Русский.";
    }
    Где главное инклудить слокэйл и сетлокэйл в начале сделать.
    • Помечено в качестве ответа PashaPashModerator 2 ноября 2010 г. 9:42
    15 июня 2009 г. 18:18

Все ответы

  • Фмшка в том, что вводите вы символы в юникоде, но в консоле в связи с её спецификой они выводятся в анси кодировке. Если нет необходимости работать с файлами, то ввод и вывод русских букв проще всего сделать так:
    #include <iostream>
    #include <clocale>
    void main()
    {
    	setlocale(LC_CTYPE, "Russian");
    	std::cout << "Русский.";
    }
    Где главное инклудить слокэйл и сетлокэйл в начале сделать.
    • Помечено в качестве ответа PashaPashModerator 2 ноября 2010 г. 9:42
    15 июня 2009 г. 18:18
  • Понятно, тонда другой вопрос: почему перед main стоит void, тот же Г.Шилдт пишет что main надо вызывать с int-ом, типа так
    int main()
    {...
      ...
      return 0;
    }
    и вроде бы от того что он вернёт 0 ему будет очень  хорошо, или пофиг он и с void схавает?


    И после этого #include <iostream> надо писать
    using namespace std&
    16 июня 2009 г. 21:45
  • Почитайте книжку дальше, попишите примеров больше.
    int, string, void, double и т.д. — это типы возвращаемых значений программы. Мне вот не нужно было, чтобы моя программа возвращала что-либо, поэтому void. Если, например, нужно при закрытии передать что-либо в другую программу, то можно вернуть 1 (или 101), или выходить с ошибкой, возвращая код ошибки.
    using namespace std; сообщает программе, что дальше будет использоваться пространство имён std. Мне ради вывода одной строчки было лень это писать, поэтому я написал так: std::cout, что сообщило программе, что нужно залезть в порстранство std и воспользоваться методом cout.
    17 июня 2009 г. 5:25
  • Подскамите как в Visual 6 выводить русские литеры? (Пример описаный выше не работает)
    11 августа 2009 г. 9:11
  • Не работаю с данной версией студии. Не могу помочь.

    12 августа 2009 г. 19:18
  • SetConsoleCP(1251);

    SetConsoleOutputCP(1251);

    18 июня 2011 г. 17:58