Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SAUtrade
13 / 13 / 1
Регистрация: 21.10.2012
Сообщений: 140
#1

не фильтрует русские буквы - C++

23.11.2012, 21:06. Просмотров 265. Ответов 2
Метки нет (Все метки)

Здравствуйте! Такая проблема... Вводится строка, пользоватль выбирает фильтр и вместо букв или цыфр вставляются пробелы... С латиницей, с цыфрами и пунктуацией прога работает отлично, а вот на кирилицу вообще не реагирует(... В чем может быть проблема?

C++ (Qt)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream> 
#include <string.h> 
#include <stdio.h>
#include <Windows.h>
 
using namespace std; 
 
const int MAXLEN = 256;
 
void filt(char *string, int key)
{
    int i;
 
    for (i = 0; i < strlen(string); i++)
    {
        switch(key)
        {
            case 1:
                if ((string[i] >= 65 && string[i] <= 90) || (string[i] >= 97 && string[i] <= 122))
                    cout << " ";
                else 
                    cout << string[i];
                break;
            case 2:
                if (string[i] >= 128 && string[i] <= 175 || (string[i] >= 224 && string[i] <= 239))
                    cout << " ";
                else
                    cout << string[i];
                break;
            case 3:
                if (string[i] == '!' || string[i] == ':' || string[i] == '.' || string[i] == ',' || string[i] == '-' || string[i] ==';' || string[i] =='?')
                    cout << " ";
                else
                    cout << string[i];
                break;
            case 4:
                if (string[i] >= 48 && string[i] <= 57)
                    cout << " ";
                else
                    cout << string[i];
                break;
            case 5:
                exit(0);
        }
    }
}
 
int main() 
{ 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char string[MAXLEN]; 
    int key;
 
    cout << "Введите текст: ";
    gets(string);
do
{
    cout << endl << "Выберите фильтр" << endl << "1. Символы латинского алфавита" << endl << "2. Символы кириллицы" << endl << "3. Смволы пунктуаци" << endl << "4. Цифры" << endl <<  "5. Выход" << endl << ">>> ";
    cin >> key;
    filt(string, key);
}
while (key != 5);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 21:06     не фильтрует русские буквы
Посмотрите здесь:

Русские буквы в консоли - C++
У меня прекрастно выводятся русские буквы в консоль, но если я ввожу русский текст в какуюту переменную, то вывести ее коректно не...

Не выводит русские буквы - C++
Всем привет. Начал постигать азы C++ и столкнулся с проблемой. Когда запускаешь программу вместо русских букв появляется какая-то...

Русские буквы в c++ char - C++
Здравствуйте, уже все облазил так ничего не нашел и не понял, нужно понять одну простую вещь, необходимо ввести с клавиатуры русское слово...

Русские буквы в консоле - C++
Привет. Совсем недавно начал изучать C++ и тут такое дело... //Заменить все точки в строке восклицательным знаком... ...

Английские и русские буквы. - C++
Здравствуйте! Подскажите пожалуйста, как в С отличить русские буквы от английских? Я думаю что надо оперировать с кодами букв, но как...

Русские буквы консоли - C++
Знаю что таких тембыло очень много, но у меня никак не получается вывести слово &quot;Привет&quot; в консоли. Пробую так ...

Русские буквы из файла. - C++
Пользуюсь Borland C++5.02. Пытаюсь написать опросник. А компилятор не хочет с файла выводить русские буквы из файла выводит на консоль ...

Префикс L и русские буквы - C++
Простой файл: #include &lt;iostream&gt; #include &lt;locale&gt; using namespace std; int main() { setlocale(LC_ALL,...

Не понимает русские буквы - C++
Здравствуйте, wchar_t t_in; wcin.getline(t_in, 20);Английские передаю,в массив записываються: 97('a'), а вот русские передаю,массив...

case и русские буквы. - C++
Здравствуйте, для перевода в кириллицу я использовал SetConsoleOutputCP(1251); SetConsoleCP(1251); При их использовании...

Не выводятся русские буквы - C++
#include &lt;iostream&gt; using namespace std; int mul (int x, int y); // прототип функции mul() int main() ...

Не распознает русские буквы. - C++
// vc.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; // Дописывает в файл фамилию, имя и номер...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
23.11.2012, 21:14     не фильтрует русские буквы #2
Цитата Сообщение от SAUtrade Посмотреть сообщение
а вот на кирилицу вообще не реагирует(
какую кирилицу? их 100500 кодировок
посему здесь
Цитата Сообщение от SAUtrade Посмотреть сообщение
string[i] >= 128 && string[i] <= 175 || (string[i] >= 224 && string[i] <= 239))
поменяй волшебные числа на символы

второе все русские символы лежат во второй половине таблице что для char является отрицательным числом соответственно все твои сравнения не действуют
используй беззнаковую
C++
1
void filt(unsigned char *string, int key)
SAUtrade
13 / 13 / 1
Регистрация: 21.10.2012
Сообщений: 140
23.11.2012, 21:22  [ТС]     не фильтрует русские буквы #3
От я...)) не учел... Спасибо все работает))
Ответ Создать тему
Опции темы

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