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

Проверка символа перед занесением в буфер

08.03.2017, 21:05. Просмотров 441. Ответов 21
Метки нет (Все метки)

Можно ли как то проверять символ на принадлежность к буквам перед заносом его в буфер?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2017, 21:05
Ответы с готовыми решениями:

Удаление символа 'Е' перед 'N'
Здравствуйте. Задача такая:в циклическом односвязном списке удалить все буквы...

Проверка вместимости числа в буфер
Есть класс дроби. Собственно он определяется двумя главными параметрами типа...

В строке вставить перед символом «+» три символа «***»
Введите строку. По всей строке вставьте перед символом «+» три символа «***»....

Перед каждым словом поставить три символа «---»
Введите строку. Преобразуйте строку таким образом, чтобы перед каждым словом...

Вставить строку перед каждым вхождением символа.
Дан символ С и строки S,S0. Перед каждым вхождением символа С в строку S...

21
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
08.03.2017, 22:13 2
isalpha
1
sourcerer
Модератор
Эксперт CЭксперт С++
4863 / 2044 / 325
Регистрация: 20.02.2013
Сообщений: 5,545
Записей в блоге: 24
Завершенные тесты: 1
09.03.2017, 04:22 3
Цитата Сообщение от retmas Посмотреть сообщение
isalpha
Я бы даже сказал std::isalpha (раз и два).
2
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
09.03.2017, 04:32 4
Цитата Сообщение от siniptik2040 Посмотреть сообщение
перед заносом его в буфер?
Что имеется ввиду под буфером?
0
siniptik2040
0 / 0 / 0
Регистрация: 12.02.2017
Сообщений: 12
10.03.2017, 15:37  [ТС] 5
место где хранятся символы до нажатия на enter и записывания их в строку
0
Croessmah
++Ͻ
14630 / 8379 / 1582
Регистрация: 27.09.2012
Сообщений: 20,583
Записей в блоге: 2
Завершенные тесты: 1
10.03.2017, 17:44 6
Цитата Сообщение от gru74ik Посмотреть сообщение
Я бы даже сказал std::isalpha
Я бы даже сказал std::isalpha(charT, const locale&).
1
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
10.03.2017, 17:54 7
Цитата Сообщение от siniptik2040 Посмотреть сообщение
место где хранятся символы до нажатия на enter и записывания их в строку
Cмотри getch(), getche().
0
siniptik2040
0 / 0 / 0
Регистрация: 12.02.2017
Сообщений: 12
10.03.2017, 20:31  [ТС] 8
Цитата Сообщение от nd2 Посмотреть сообщение
Cмотри getch(), getche().
То есть создать переменную char и этой переменной присваивать getch(), и если она буква, то заносить в строку и при каждом новом заносе стирать экран и выводить строку заново? Так? Если да, то этот способ не подходит, так как экран моргает и очень сложно сделать удаление одного символа при нажатии на backspace (если нужно стереть не последний символ, а, например, предпоследний). Я, полагаю, должен быть более легкий способ реализации.
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
10.03.2017, 20:37 9
Задачу яснее изложи. Откуда берутся символы, что хочешь получить.
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
10.03.2017, 21:22 10
Цитата Сообщение от siniptik2040 Посмотреть сообщение
и при каждом новом заносе стирать экран и выводить строку заново? Так?
Нет. Стирать экран не нужно, просто выводи символ, если это буква. Всю строку можно и потом вывести (если это нужно).
0
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
10.03.2017, 21:48 11
Ну скажем...так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main (){
 
        SetConsoleCP (1251);
        SetConsoleOutputCP (1251);
    
        char text[25];
        for (int i(0); i!=25; i++){
            text[i] = getche();
 
            if(!isalpha(text[i]))
                i--;
        }
 
        std::cout << std::endl;
        std::cout << "YOUR BUFFER" << std::endl;
        for (int i(0); i!=25; i++){
            std::cout << text[i];
        }
 
        system ("pause");
        return 0;
    }
Добавлено через 1 минуту
Пользуясь случаем хочу спросить, можно ли чем-нибудь заменить getche(), для возможности вводить русские буквы?
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
10.03.2017, 21:51 12
Цитата Сообщение от Photofenix Посмотреть сообщение
Пользуясь случаем хочу спросить, можно ли чем-нибудь заменить getche(), для возможности вводить русские буквы?
Локаль русскую установи.
0
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
10.03.2017, 21:57 13
При локали - ошибка.
Без локали - крагозябры.
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
10.03.2017, 22:08 14
Цитата Сообщение от Photofenix Посмотреть сообщение
При локали - ошибка.
Какая? Параметр cctype функций нужно к unsigned char приводить.

Добавлено через 2 минуты
Цитата Сообщение от Photofenix Посмотреть сообщение
Без локали - крагозябры.
Это убираешь?
C++
1
2
        SetConsoleCP (1251);
        SetConsoleOutputCP (1251);
0
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 513
Завершенные тесты: 1
10.03.2017, 22:26 15
Тоже самое.
std::cin.get(), что-нибудь можете рассказать?
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
10.03.2017, 22:32 16
Цитата Сообщение от Photofenix Посмотреть сообщение
Тоже самое.
Что "тоже самое"? Код покажи.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    setlocale(0, "");
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
    
    const size_t N = 10;
    char str[N];
    char a;
    int i = 0;
    while (true)
    {
        a = getch();
        if (isalpha((unsigned char)a))
        {
            cout << a;
            str[i++] = a;
        }
        if (a == 13 || i == N - 1)
            break;
    }
    str[i] = '\0';
   
    cout << endl << str << endl;
0
siniptik2040
0 / 0 / 0
Регистрация: 12.02.2017
Сообщений: 12
11.03.2017, 20:58  [ТС] 17
Цитата Сообщение от nd2 Посмотреть сообщение
Нет. Стирать экран не нужно, просто выводи символ, если это буква. Всю строку можно и потом вывести (если это нужно).
Экран стирать нужно, если я стираю 1 символ, то со строки он стирается, а на экране он остается
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
11.03.2017, 21:09 18
Цитата Сообщение от siniptik2040 Посмотреть сообщение
Экран стирать нужно, если я стираю 1 символ
Зачем стирать экран? Зачем стирать один символ?
0
siniptik2040
0 / 0 / 0
Регистрация: 12.02.2017
Сообщений: 12
12.03.2017, 00:13  [ТС] 19
Цитата Сообщение от nd2 Посмотреть сообщение
Зачем стирать экран? Зачем стирать один символ?
Мне нужно ввести фамилию. Я ввел, например, Иваноы, фамилию я ввел некорректно и мне нужно стереть букву "Ы" что-бы исправить на правильную букву. Я сделал уже так, если нажимается backspace, то символ стирается из строки, но на экране он еще отображается в строке и что-бы его убрать с экрана, мне приходится каждый раз очищать экран и выводить строку заново.
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
12.03.2017, 00:30 20
Цитата Сообщение от siniptik2040 Посмотреть сообщение
Я ввел, например, Иваноы, фамилию я ввел некорректно и мне нужно стереть букву "Ы" что-бы исправить на правильную букву.
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
    setlocale(0, "");
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
    
    const size_t N = 10;
    char str[N];
    char a;
    int i = 0;
    while (true)
    {
        a = getch();
        if (a == '\b')
        {
            cout << '\b' << ' ' << '\b';
            if (i)
                --i;
            continue;
        }
        if (isalpha((unsigned char)a))
        {
            cout << a;
            str[i++] = a;
        }
        if (a == 13 || i == N - 1)
            break;
    }
    str[i] = '\0';
   
    cout << endl << str << endl;
1
12.03.2017, 00:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2017, 00:30

Вставить строку перед каждым вхождением заданного символа
Даны строки S1, S2 и символ C. Перед каждым вхождением символа C в строку S1...

Проверка на ввод символа
При вводе какого либо символа программа уходит в прострацию надо что бы...

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


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

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

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