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

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

Войти
Регистрация
Восстановить пароль
 
Bredorub
5 / 5 / 0
Регистрация: 16.01.2011
Сообщений: 94
#1

Очередной запрет ввода - C++

25.02.2011, 07:36. Просмотров 725. Ответов 3
Метки нет (Все метки)

Можно ли сделать так, чтобы при вводе (cin) программа никак не реагировала на нажатие кнопок? Например игнорировала определенные символы или не реагировала на бэкспэйс.

P.S: С getche() в этом плане уже немного разобрался - ненужные символы легко затираются пробелами в условных операторах, хотя мне кажется что это не совсем рационально.

Добавлено через 18 часов 45 минут
Чтото все молчат... Нельзя, стало быть? Неужели единственный выход - писать свою версию cin'а, без бэкспэйса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2011, 07:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Очередной запрет ввода (C++):

Очередной по getline() или потоки ввода - C++
Всем привет! :drink: Ребятки, такая трабла, прога добавляет студентов в группу, при добавлении 2го студента ф-ция getline() непонятно для...

Запрет ввода букв - C++
Вчера пробовал написать калькулятор. Но в нем можно вводить и буквы и цифры. Что надо допасать в коде чтобы буквы не вводились на экран? А...

Запрет ввода чисел - C++
необходимо в калькуляторе сделать запрет ввода числа, через кеу не получается.вот полный код #include "stdafx.h" #include <iostream> ...

Запрет ввода в консоли - C++
Ребят, привет. Сейчас пишу змейку в консоли. Написано относительно мало. Тут столкнулся с проблемой, что во время игры, когда игрок...

Запрет ввода в консольном приложении - C++
Здравствуйте! Мне необходимо осуществить следующую задачу: 1) Запретить пользователю ввод положительных чисел. 2) Запретить ввод...

Запрет ввода символов в консоли - C++
моя консольная программа имеет очень много вводов от пользователя, через контекстное меню (нажмите 1 для того, 2 для другого) чтоб не...

3
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
25.02.2011, 14:43 #2
Стандартных средств для этого нет. Как это сделать зависит от используемой операционной системы.
0
Bredorub
5 / 5 / 0
Регистрация: 16.01.2011
Сообщений: 94
25.02.2011, 16:32  [ТС] #3
Цитата Сообщение от rangerx Посмотреть сообщение
Стандартных средств для этого нет. Как это сделать зависит от используемой операционной системы.
А пример можете привести? Допустим, в одну програму пишем в хр, другую в freebsd. В чем конкретно будут заключаться различия в реализации? Можно ли предусмотреть кроссплатформенность и в зависимости от используемой операционной системы программно избрать тот или иной способ?
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,385
Записей в блоге: 2
Завершенные тесты: 1
25.02.2011, 17:04 #4
Через WinAPI могу пример показать, но естественно ни о какой кроссплатформенности речи идти не может.

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream> 
#include <windows.h>
using namespace std;
const int C=20;
int main() {
 HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
 INPUT_RECORD IR[C];
 DWORD read;
 while(PeekConsoleInputA(hstd,IR,c,&read)){
         bool F=false;
         for(int i=0;i<read;i++){
         if(IR[i].EventType==KEY_EVENT) && IR[i].Event.KeyEvent.wVirtualKeyCode==VK_SPACE){
                 cout<<endl<<"You press space"<<endl;
                 system("pause");
                 F=true;
                 break;}
         }
         if(F)break;
         cout<<"Press any key..."<<endl;
         Sleep(1000);
 }
 return 0;
}
Низкоуровневая ф-ции консольного ввода, считывает нажатую клавишу из буфера консоли (без эха), в твоем случае можно проверять была ли нажата клавиша бэкспэйс и игнорировать ее, если нажата другая клавиша, то "пропускать" ее дальше.
1
25.02.2011, 17:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2011, 17:04
Привет! Вот еще темы с ответами:

Запрет ввода числа с точкой - C++
Как запретить ввод десятичных чисел? Напрягает, из-за этого прога падает. Плюс, не нашел вариантов проверки на наличие у числа десятичной...

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

Запрет ввода символов в поле Edit - C++
Как запретить нажатие и вставку из буфера всех символов, кроме нужных мне, к примеру разрешить вводить в поле только цифры? И еще 2-ой...

Запрет ввода символов, отличных от цифр - C++
Нужно заполнить двумерный массив только числами. Как это реализовать?


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

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

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