Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 27.11.2010
Сообщений: 12
1

_getch() в цикле выводит бред вместо русских букв

26.07.2011, 23:16. Показов 2536. Ответов 1
Метки нет (Все метки)

Извращался тут с getch(), возникла небольшая, но странная (для меня) проблема.
В программе такого рода
C++
1
2
3
char x;
x=_getch();
cout<<x;
нормально проходят как английские, так и русские символы (ну и остальные клавиши, естественно).

Решил модифицировать, накодировал вот такую фигню:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int bykva(char n) //функция сравнивает полученный код клавиши с кодом букв, если буква, то выводит 1, иначе - 0
{
    for(int i=69;i<=122;)
    {
    if(n!=i)
    ++i;
    else
    return 1;
    }
    for(int i=128;i<=239;)
    {
    if(n!=i)
    ++i;
    else
    return 1;
    }
return 0; 
}
 
void main()
{
setlocale (LC_CTYPE,"Russian");
vector <char> word;
char x='s';
while(bykva(x)==1); //набирать слово до тех пор, пока не введен символ, отличный от буквы
{
x=_getch();
word.push_back(x);
cout<<x;
}
cout<<endl<<"Был введён символ!";
_getch();
}
Такая программа выводит на экран не русские буквы, а другие символы. Т.е. набираю русское слово - вылазиют всякие K, D, @ и прочие.
Использование многобайтовой кодировки, wchar_t и getwch() ни к чему не привело.
Ломаю голову, гугл-папирус ничего не нашёл.

PS. Я полный нуб, и IDE моя VS2008.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.07.2011, 23:16
Ответы с готовыми решениями:

Выводит иероглифы вместо русских букв
Здравствуйте! Вместо 'Привет Мир!' выводит � � � � � � � � � � � ! Подскажите... $str = 'Привет...

Выводит в консоль вместо русских букв квадраты
Добрый день. Подскажите пожалуйста, почему в Netbeans вместо русских букв задаваемых через консоль...

В geany (.pas) вместо русских букв выводит иероглифы
Доброе утро/вечер. Я новичок в ОС Ubuntu, вкратце опишу проблему. Поставил IDE geany, для более...

Вместо русских букв выводит чёрные ромбы со знаком ? в чём может быть дело?
Вместо русских букв выводит чёрные ромб с ? в чём дело? Задание:поменять все заглавные на строчные...

1
239 / 212 / 84
Регистрация: 18.03.2010
Сообщений: 750
27.07.2011, 01:26 2
На вот, должно нормально выводить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio.h>
#include <vector>
 
using namespace std;
using namespace System;
void main()
{
    vector <char> word;
    char x=' ';
    while( ! isdigit(x) ) 
    {
        x = _getch();
        word.push_back(x);
        cout<<x;
    }
    Console::WriteLine(L"\nБыл введён символ!");
    getch();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.07.2011, 01:26

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Почему при копировании из Matcad 15 в Word вместо русских букв получаются какие-то "каракули" - непонятные символы вместо букв
Я пользуюсь Matcad 15. Почему при копировании набранного текста из рабочей области Matcad 15 в...

? вместо русских букв
Вот код: &lt;?php require &quot;db.php&quot;; if (isset($_POST)) { $koments =...

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

? вместо русских букв
(лазарус )Использую в начале файл екзист при создании формы, и мне вместо русских букв в шоумессаге...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.