Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/89: Рейтинг темы: голосов - 89, средняя оценка - 4.84
11 / 11 / 0
Регистрация: 16.02.2011
Сообщений: 17

Поиск кириллицы в строке.

17.02.2011, 20:07. Показов 19180. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, ув. товарищи-программисты). Столкнулся с проблемкой поиска и замены букв кириллицы в строке, введенной пользователем. Стоит задача - заменить все символы кириллицы на пробелы. Казалось бы делаем так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void kiril(char text[], char *ptext)
{
    int n=strlen(text);
    strupr(text);
    char spis[31]={'А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ы','Ь','Э','Ю','Я'};
    //ПОИСК ЭЛЕМЕНТОВ КИРИЛЛИЦЫ В ТЕКСТЕ И ИХ ЗАМЕНА НА ПРОБЕЛ
    for (int i=0; i<n;i++){
        for (int j=0; j<31; j++){
            if (*(ptext+i) == spis[j])
                *(ptext+i)=' ';
        }
    }
    //ВЫВОД НА ЭКРАН ОТФИЛЬТРОВАННОГО ТЕКСТА
    cout<<"Текст после фильтрации:\n"<<ptext<<"\n";
    
}
и должно работать, но нет - половина символов остаеться на месте в виде иероглифов.
В связи с чем прошу помочь советом - есть ли решение данной проблемы? Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2011, 20:07
Ответы с готовыми решениями:

Определить и вывести на экран количество букв кириллицы в строке
После ввода с клавиатуры произвольной строки определить и вывести на экран количество букв кириллицы в ней

Определить, какая буква кириллицы встречается в строке наибольшее количество раз
Дана последовательность символов (строка). Определить, какая буква кириллицы встречается в строке наибольшее количество раз. Если таких ...

Поиск кириллицы в строке
Приветствую. Есть вот такая задачка: Так и не разобрался, как из строки считать не-ASCII символы целиком, а не по байтам: #include...

23
 Аватар для dxdy
99 / 99 / 14
Регистрация: 14.06.2010
Сообщений: 284
17.02.2011, 23:28
Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdio>
#include <clocale>
 
int main(){
  char str[] = "Hello! иногда и к нам жизнь поворачивается лицом,"
                        " поэтому все немного проще, it's all";
  setlocale( LC_CTYPE, "rus" );
  for( char* s = str; *s; ++s ){
    if( (*s <= -1 && *s >= -32) || (*s >= -64 && *s <= -33) ){
      *s = ' ';
    }
  }
  printf( "%s", str );
}
2
11 / 11 / 0
Регистрация: 16.02.2011
Сообщений: 17
17.02.2011, 23:58  [ТС]
dxdy, в таком виде заработало, спасибо!
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
18.02.2011, 00:04
dxdy, не можете выяснить в чем было дело (если можете воспроизвести))?
очевидно какие-то приведения между знаковыми и беззнаковыми
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
18.02.2011, 01:25
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
34
35
36
37
38
39
40
/////////////////////////////////////////////////////////////////////////////////////////
//заменить все символы кириллицы на пробелы.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <locale>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
T_str  replace_cyr_letters_to_spaces(const T_str&  s)
{
    struct  T_is_cyr_let
    {
        bool  operator() (char  let)
        {
            return    isalpha(let, std::locale(""))
                   && !isalpha(let, std::locale("C"));
        }
    };
    T_str  res_s;
    std::replace_copy_if(s.begin(), s.end(), std::back_inserter(res_s), 
                         T_is_cyr_let(), ' ');
    return  res_s;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    T_str  s("Hello! Привет, привет...");
    std::cout << "Исходный текст:"
              << std::endl
              << s
              << std::endl
              << std::endl
              << "Текст, где все буквы кириллицы заменены пробелами:"
              << std::endl
              << replace_cyr_letters_to_spaces(s)
              << std::endl;    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2011, 01:25

Встречается ли в строке символы кириллицы
Помогите,пожалуйста(( В памяти дана строка символов, находящаяся по адресу А1 и длиной N. Проверьте, встречается ли в строке символы...

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

Определить, сколько символов кириллицы и латиницы присутствует в заданной символьной строке
Определить, сколько символов кириллицы и латиницы присутствует в заданной символьной строке. Скорее всего для многих это будет...

Определить, сколько символов кириллицы и латиницы присутствует в заданной символьной строке
Определить, сколько символов кириллицы и латиницы присутствует в заданной символьной строке. Что здесь с чем сравнивать нужно,...

AFDP. Дана строка символов длиной N. Проверьте, встречается ли в строке символы кириллицы
Задание: В памяти дана строка символов, находящаяся по адресу А1 и длиной N. Проверьте, встречается ли в строке символы кириллицы. В...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru