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

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

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

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

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

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

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

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

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

в очередной раз рекурсия - C++
функция f(n) определяется рекурсивно f(2*n)=f(n),f(2*n+1)=f(n)+f(n+1),f(0)=0,f(1)=1, Написать программу вычисляющую функцию f(n).

Union в очередной раз - C++
Здравствуйте! Решил на практике попробовать этот самый union. Программа должна выводить число short int, а так же старший и младший...

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

Очередной Aeroflot, но немного другой - C++
Описать структуру AEROFLOT... Организовать: ввод данных, вывод, редактирование, удаление, поиск, сортировку, чтение и запись в файл. В...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
25.02.2011, 14:43     Очередной запрет ввода #2
Стандартных средств для этого нет. Как это сделать зависит от используемой операционной системы.
Bredorub
5 / 5 / 0
Регистрация: 16.01.2011
Сообщений: 94
25.02.2011, 16:32  [ТС]     Очередной запрет ввода #3
Цитата Сообщение от rangerx Посмотреть сообщение
Стандартных средств для этого нет. Как это сделать зависит от используемой операционной системы.
А пример можете привести? Допустим, в одну програму пишем в хр, другую в freebsd. В чем конкретно будут заключаться различия в реализации? Можно ли предусмотреть кроссплатформенность и в зависимости от используемой операционной системы программно избрать тот или иной способ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2011, 17:04     Очередной запрет ввода
Еще ссылки по теме:

На очередной ночной вечеринке факультета студенты в количестве N человек решили порассказывать байку из K слов и для этого сели в один круг вокруг кос - C++
Входной файл: input.txt Выходной файл: output.txt Время на тест: 9 секунд На очередной ночной вечеринке факультета студенты в...

ЗАПРЕТ на ввод Б У К В Ы ... ... ... - C++
Господа Уважаемые Программисты, если я объявляю переменную х как символьную,........... то каким образом мне надо поставить условие,...

Запрет на ввод букв - C++
Помогите пожалуйста сделать запрет на ввод букв: #include "stdafx.h" #include <cstdlib> #include <iostream> #include...

Запрет на загрузку сайта - C++
Народ, возникла такая задача:Есть файл с названиями сайтов, программа получает путь к файлу, читает их оттуда( это все понятно), и...


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

Или воспользуйтесь поиском по форуму:
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 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;
}
Низкоуровневая ф-ции консольного ввода, считывает нажатую клавишу из буфера консоли (без эха), в твоем случае можно проверять была ли нажата клавиша бэкспэйс и игнорировать ее, если нажата другая клавиша, то "пропускать" ее дальше.
Yandex
Объявления
25.02.2011, 17:04     Очередной запрет ввода
Ответ Создать тему
Опции темы

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