Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

23.11.2012, 21:06. Просмотров 284. Ответов 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);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 21:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не фильтрует русские буквы (C++):

Русские буквы - C++
такая ситуация : написал в консоле карточную игру, для обозначения значков мастей нужна строчка setlocale(LC_ALL,&quot;rus&quot;); а надо еще и...

русские буквы - C++
Иероглифы вместо русских слов.Что делать??? (Пользуюсь С++ Builder 2010)

Русские буквы - C++
Суть такая: надо записать в файл название модуля. Для модулей с английским названием и путём до них он пишет нормально, а на русском...

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

русские буквы - C++
можно ли как-нибудь ввести в консоль русский текст, получить его, а затем работать с ним, а затем вывести его. посьню: есть код: ...

русские буквы - C++
Всем привет!!! У меня есть один вопрос, может кто-нибудь знает ответ на него. Итак, как известно в с++ можно вводить только английские...

2
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,233
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)
1
SAUtrade
13 / 13 / 1
Регистрация: 21.10.2012
Сообщений: 140
23.11.2012, 21:22  [ТС] #3
От я...)) не учел... Спасибо все работает))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2012, 21:22
Привет! Вот еще темы с ответами:

Русские буквы - C++
Ребят всем привет!!! Подскажите мне пожалуйста такую вещь,хочу в С++ чтобы на русском выводилось,компилирую в Dev C++,у меня каляки...

Русские буквы в C++ - C++
Помогите исправить, спасибо. Доброго времен суток! Я написал программу с Русскими буквами. Для ввода и вывода Русских букв,...

Русские буквы в С - C++
помогите разобраться с алфавитом в с как сделать что бы когда я ввожу русские буквы то компилятор не распознает их и я не могу работать с...

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


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

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

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