How can I clear buffer between getch & cin?

V

voidstar

Hi, I have the following problem:

I use "getch" to monitor keypresses and the I use "cin" to input a
string.

When I type in 'y', the 'y' character appears, so I need to hit backspace
before typing the string.

c = getch();
cin >> str;

Please help me!
Thanks in advance
voidstar
 
J

John Harrison

Hi, I have the following problem:

I use "getch" to monitor keypresses and the I use "cin" to input a
string.

When I type in 'y', the 'y' character appears, so I need to hit backspace
before typing the string.

c = getch();
cin >> str;

Please help me!
Thanks in advance
voidstar

getch is not part of standard C++, cin is part of standard C++. If you try
an mix the two then the results are going to be unpredictable. Basically
don't do it.

Standard C++ has no way of monitoring keypresses, so if you need to do
this then you should forget about using standard C++ for any console input
or output.

john
 
A

Ash

John said:
getch is not part of standard C++, cin is part of standard C++. If you
try an mix the two then the results are going to be unpredictable.
Basically don't do it.

Standard C++ has no way of monitoring keypresses, so if you need to do
this then you should forget about using standard C++ for any console
input or output.

john
All true, but I found that it is compiler dependant. For example, in
Borland's compiler:

ch = getch();
switch(ch){
//select stuff
}
cin >> string; //or even cin.getline(const char[], int)

after pressing a button to be used in the switch() statement, that char
would be placed at the beginning of the string's array. However, using
Bloodshed's Dev-C++ IDE, it seems to 'clear the buffer'. I have, however
heard of functions that do this. I think http://www.cplusplus.com, but
I'm not sure.
 
M

Mark R Rivet

I believe you should do a "cin>>ws;"
the "ws" means white space and should clear the buffer after you do
the getch();


John said:
getch is not part of standard C++, cin is part of standard C++. If you
try an mix the two then the results are going to be unpredictable.
Basically don't do it.

Standard C++ has no way of monitoring keypresses, so if you need to do
this then you should forget about using standard C++ for any console
input or output.

john
All true, but I found that it is compiler dependant. For example, in
Borland's compiler:

ch = getch();
switch(ch){
//select stuff
}
cin >> string; //or even cin.getline(const char[], int)

after pressing a button to be used in the switch() statement, that char
would be placed at the beginning of the string's array. However, using
Bloodshed's Dev-C++ IDE, it seems to 'clear the buffer'. I have, however
heard of functions that do this. I think http://www.cplusplus.com, but
I'm not sure.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top