Thursday, November 17, 2011

Question :

How to get user input in C++?

I'm making a win32 console application and I wondering how can I get user input, and by that I mean, is there a way I can store keys like enter or ctrl or alt etc. in a variable of some sort? I know I can use the cin function to store basic text but what about other keys?

Answer :

using getch() we can get the character that a user type in the keyboard and it will be in ASCII code we have to convert to the char and use it.

Sample Code :

/* This program shows how to pick up the scan codes from a keyboard */

/* These define the scan codes(IBM) for the keys. All numbers are in decimal.*/
#define PAGE_UP     73
#define HOME        71
#define END         79
#define PAGE_DOWN   81
#define UP_ARROW    72
#define LEFT_ARROW  75
#define DOWN_ARROW  80
#define RIGHT_ARROW 77
#define F1          59
#define F2          60
#define F3          61
#define F4          62
#define F5          63
#define F6          64
#define F7          65
#define F8          66
#define F9          67
#define F10         68
#include <iostream>
#include <conio.h>

using namespace std;

void main()
{
char KeyStroke;

cout << "Press Escape to quit." << endl;

do
{
KeyStroke = getch();

if (KeyStroke == 0)
{
KeyStroke = getch(); // Even though there are 2 getch() it reads one keystroke
switch (KeyStroke)
{
case PAGE_UP:
cout << "PAGE UP" << endl;
break;
case PAGE_DOWN:
cout << "PAGE DOWN" << endl;
break;
case HOME:
cout << "HOME" << endl;
break;
case END:
cout << "END" << endl;
break;
case UP_ARROW:
cout << "UP ARROW" << endl;
break;
case DOWN_ARROW:
cout << "DOWN ARROW" << endl;
break;
case LEFT_ARROW:
cout << "LEFT_ARROW" << endl;
break;
case RIGHT_ARROW:
cout << "RIGHT_ARROW" << endl;
break;
case F1:
cout << "F1" << endl;
break;
case F2:
cout << "F2" << endl;
break;
case F3:
cout << "F3" << endl;
break;
case F4:
cout << "F4" << endl;
break;
case F5:
cout << "F5" << endl;
break;
case F6:
cout << "F6" << endl;
break;
case F7:
cout << "F7" << endl;
break;
case F8:
cout << "F8" << endl;
break;
case F9:
cout << "F9" << endl;
break;
case F10:
cout << "F10" << endl;
break;
default:
cout << "Some other key." << endl;
}
}
else
cout << KeyStroke << endl;
}
while (KeyStroke != 27); // 27 = Escape key
}



Ascii Code table for C++

No comments:

Post a Comment