Не отображаются символы в программе

Кто объяснит мне, почему символы не отображаются, а вместо них непонятный символ один выводится? Вот код:

#include #include using namespace std; class Stack < private: int maxSize, top; char *stack_array; public: Stack(char n) < stack_array = new char[n]; maxSize = n; top = 0; >~Stack() < delete[]stack_array; >void push(char a) < if (top >= maxSize) < cout else stack_array[top++] = a; > int pop() < if (top == 0) < cout else return stack_array[—top]; > void print() < for (int i = 0; i < top; i++) < cout > char show(char a) < return stack_array[a — 1]; >>; int main() < system(«chcp 1251»); char massiv[20]; int k = 0; string str = «1 + 2»; for (int j = 0; j < str.length(); j++) < if (str[j] != ‘+’ str[j] != ‘-‘ str[j] != ‘*’ str[j] != ‘/’) < massiv[k] = str[j]; cout > cout

Вот скрин

Отслеживать
51.1k 83 83 золотых знака 263 263 серебряных знака 501 501 бронзовый знак
задан 25 окт 2012 в 8:08
1,852 18 18 золотых знаков 75 75 серебряных знаков 131 131 бронзовый знак

Как исправить? Иероглифы и знаки вопроса вместо русских букв!

massiv[k++] = str[j]; cout
25 окт 2012 в 8:15
25 окт 2012 в 8:29

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Вот код, который выведет код символа и его значение.

int main() < std::system(«chcp 1251»); char massiv[20]; int k = 0; std::string str = «1 + 2»; for (int j = 0; j < str.length(); j++) < if (str[j] != ‘+’ str[j] != ‘-‘ str[j] != ‘*’ str[j] != ‘/’) < massiv[k] = str[j]; cout > cout
Отслеживать
51.1k 83 83 золотых знака 263 263 серебряных знака 501 501 бронзовый знак
ответ дан 25 окт 2012 в 9:10
6,331 7 7 золотых знаков 48 48 серебряных знаков 95 95 бронзовых знаков
то же самое выводит =/
25 окт 2012 в 9:43

Он должен вывести вот это 0) код=49 = 1 1) код=32 = 3) код=32 = 4) код=50 = 2
25 окт 2012 в 9:49
не выводит. Те же самые значки выходят
25 окт 2012 в 9:59
покажите что именно выводится. Код точно такой включаете?
25 окт 2012 в 10:06
25 окт 2012 в 11:00
> massiv[k++] = str[j]; > cout

Отслеживать
ответ дан 25 окт 2012 в 8:14
2,079 12 12 серебряных знаков 12 12 бронзовых знаков
25 окт 2012 в 8:19
У тебя инкремент идёт, два раза. Попробуй откомпилировать в уме, или на листочке — поймёшь.
25 окт 2012 в 8:30
а какая разница сколько раз идет? там же каракуля влетает. Моя проблема в этом
25 окт 2012 в 8:43

Читайте также:
Прекращена работа программы java

В таком случае, рекомендую задать этот вопрос на сайте govnokod.ru
25 окт 2012 в 8:54
25 окт 2012 в 8:59

Лично меня смущает вот эта строка:

std::system(«chcp 1251»);

Попробуйте заменить ее на:

setlocale(LC_ALL, «»);
Отслеживать
ответ дан 25 окт 2012 в 13:39
5,811 1 1 золотой знак 21 21 серебряный знак 29 29 бронзовых знаков

а ещё лучше #include и в майне setlocale(LC_ALL,»rus») но я всё же считаю идеальным вариант www.codenet.ru/progr/cpp/ruscpp/ всё таки и ввод и вывод

25 окт 2012 в 14:14
25 окт 2012 в 14:26
25 окт 2012 в 14:33

Кракозябры вместо русских букв в Windows 10 применяем 2 метода исправления ситуации

Где именно? У вас несколько раз код менялся. Я сам запутался, с чего всё началось. Вроде бы Yura Ivanov сказал в чём проблема. И самые первые комментарии об этом. // здесь massiv[0]==undefined // здесь massiv[1]==’1′ massiv[k++] = str[j]; // здесь запрашивается massiv[2] который ==undefined cout
25 окт 2012 в 15:09

Источник: ru.stackoverflow.com

Не отображаются русские символы и буквы в программе C++ и Qt.

Отображение русских символов в Qt

Follow us on Twitter Follow us on rss

Добрый день, читатель. По умолчанию русские символы в программах с использованием Qt фреймворка отображаются некорректно. Вместо них используются непонятные знаки. Эта проблема появляется при открытии исходников программ, при выводе русских букв в консоль, при выводе русских букв в виджеты (Label, PlainText и т.д.). В этой статье содержатся решения этих проблем.

На сайте уже имеется статья, в которой показано решение проблемы отображения русских букв при выводе в консоль на C++.

Русские символы в исходном коде

Бывает возникает проблема с кодировкой при открытии исходных текстов программ в Qt Creator, чаще всего такая проблема возникает у пользователей Windows. Дело в том, что при написании программы исходники иногда сохраняются в одной кодировке, а редактор в Qt Creator открывает по умолчанию в другой кодировке. Из-за этого вместо русских букв появляются кракозябры или знаки вопроса. По умолчанию в настройках редактора кода Qt Creator кодировка файлов устанавливается System, т.е. кодировка операционной системы. Linux чаще всего использует UTF-8, а Windows cp1251.

Проблема с кодировкой в редакторе Qt Creator

Проблема с кодировкой в редакторе Qt Creator

Для решения проблемы в верхнем меню Qt Creator следует выбрать Инструменты(Tools) — Параметры…(Settings…). В открывшемся окне слева в списке найти и выбрать Текстовый редактор(Text Editor), далее выбираем вкладку Поведение(Behavior). Находим группу настроек Кодировки файлов(Encoding files) и выбираем кодировку по умолчанию(default) — UTF-8. Теперь редактор будет открывать исходники в UTF-8, исходные тексты программ чаще всего пишутся именно в этой кодировке.

Читайте также:
Программа для настройки эирподс на андроиде

После настройки редактора следует перекодировать сами исходники. Это можно сделать в Notepad++, если вы пользователь Windows.

Можно открывать файлы и в других кодировках, для этого в верхнем меню следует выбрать Правка — Выбрать кодировку, а далее найти кодировку, в которой был сохранен исходник программы.

В итоге редактор будет сохранять исходники в новых проектах в UTF-8 и корректно открывать их после.

Русские символы в виджетах Qt

Помещая русские символы в поле Text в виджете Label или в другие виджеты, можно также столкнуться с проблемой отображения русских букв. В редакторе форм русские символы в виджеты устанавливаются и отображаются нормально, а вот при установки программным путем — нет.

Поместим русские символы в виджет Label и в PushButton в редакторе форм.

Русские символы в редакторе форм Qt

Русские символы в редакторе форм Qt

Как видно, они отображаются корректно. Далее скомпилируем и запустим программу.

Отображение русских символов в виджетах

Отображение русских символов в виджетах

Отображение символов корректно. Теперь в изменим текст в виджетах программным путем, для этого в редакторе кода в файле mainwindow.cpp в конструктор добавим пару строк:

ui->label->setText(«Русские символы»); ui->pushButton->setText(«И здесь»);

А затем скомпилируем и запустим программу.

Проблемы с отображением русских символов

Проблемы с отображением русских символов

Как видно, проблема имеет место быть, но решить ее очень легко.

Для этого устанавливаем текст с помощью функции trUtf8().

ui->label->setText(trUtf8(«Русские символы»)); ui->pushButton->setText(trUtf8(«И здесь»));

Скомпилируем и запустим программу.

Корректное отображение с trUtf8()

Корректное отображение с trUtf8()

Проблема решена, но если таких выводов в программе много, то вставка текста через функцию нерациональна с точки зрения времени. Можно решить проблему не прибегая к функции trUtf8(), для этого нужно лишь задать кодеки в программе. В файле main.cpp подключаем заголовок QTextCodec.

#include

В начало функции main.cpp добавляем следующие строчки:

QTextCodec* codec = QTextCodec::codecForName(«UTF-8»); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec);

Устанавливаем текст в виджетах в файле mainwindow.cpp без функции trUtf8()

ui->label->setText(«Русские символы»); ui->pushButton->setText(«И здесь»);

Компилируем и запускаем.

Корректное отображение русских символов с установленным кодеком

Корректное отображение русских символов с установленным кодеком

Отображение символов корректно, теперь не нужно прибегать к функции trUtf8(). Проблема решена.

Кстати, в последних версиях Qt такой проблемы с кодировкой у меня не наблюдалось.

Для примера был создан стандартный проект Qt Widgets. Поэтому после решения проблем с кодировкой файл main.cpp содержит следующий код

#include «mainwindow.h» #include #include int main(int argc, char *argv[])

Вывод русских символов в консоль с Qt

Если русские символы в консоль выводятся некорректно через qDebug(), то решение для этого такое же, как и решение с отображением русских символов в виджетах Qt.

Читайте также:
Как заканчивается программа на паскале

А если Вы пишете без Qt и у вас проблемы русскими символами при выводе в консоль, то почитайте статью, там есть решение — Русские символы(буквы) при вводе/выводе в консоль на C++.

Надеюсь, что статья Вам чем-то помогла.

Источник: nicknixer.ru

Моя Windows 7 внезапно перестала отображать символы Юникода

По какой-то странной причине мой компьютер внезапно перестает отображать определенные символы Юникода! Я понятия не имею, что случилось.

Затронутые приложения включают в себя Windows Explorer (должен быть японскими символами), Google Chrome (должен быть сердцем) и Winamp (должны быть звездочками): юникода юникода Русские, немецкие и т.д. Символы отображаются нормально. Chrome также отображает японский сценарий на веб-сайтах, но не в графическом интерфейсе. Как я могу это исправить?

TL; DR: Обходной путь — поместить ярлык с именем Unicode на рабочий стол, чтобы explorer.exe был первым процессом, отображающим строку Unicode после загрузки.

Обновление: я пытался использовать восстановление системы, чтобы исправить это. Мне нужно было вернуться во времени довольно давно, потому что самые последние точки восстановления не решили эту проблему, поэтому я использовал один из середины ноября. После этого восстановления символы Unicode отображались снова.

Затем я снова обновил свою систему с помощью Центра обновления Windows, поскольку они были удалены во время восстановления. После этого ошибка произошла снова! Затем я выполнил восстановление до точки перед моими новыми обновлениями, но ошибка сохраняется, и старая точка восстановления (которую я использовал ранее) исчезла, и в настоящее время нет других снимков системы. Любые предложения о том, что делать сейчас? Обновление 2: я мог найти обходной путь:

Панель управления → Регион и язык → Администрирование → Изменить язык для несовместимых с Юникодом программ на японский (Япония).

Все упомянутые программы снова правильно отображают свои символы. Однако я не считаю это исправлением, поскольку эти программы обычно не совместимы с Юникодом, и это также приводит к некоторым (несерьезным) артефактам в некоторых программах. Я все еще приветствую ответ, который говорит мне, что здесь пошло не так и как решить проблему.

Обновление 3: я думаю, что я выделил конкретное обновление Windows, которое вызывает ошибку. Низкая производительность в приложениях, использующих API DirectWrite на компьютере под управлением Windows 7 или Windows Server 2008 R2. Я установил все остальные обновления, кроме этого, и ошибка больше не возникала. Обновление 4: Истинным источником этой проблемы был Chrome, см. Принятый ответ.

Обходной путь: поместите ярлык с именем Unicode на рабочий стол, чтобы explorer.exe был первым процессом, отображающим строку Unicode после загрузки.

Источник: poweruser.guru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru