Connecting Tech Pros Worldwide Forums | Help | Site Map

How can I clear buffer between getch & cin?

voidstar
Guest
 
Posts: n/a
#1: Jul 22 '05
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

John Harrison
Guest
 
Posts: n/a
#2: Jul 22 '05

re: How can I clear buffer between getch & cin?


On Wed, 21 Jul 2004 20:31:04 GMT, voidstar <voidstar@tin.it> wrote:
[color=blue]
> 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[/color]

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

Ash
Guest
 
Posts: n/a
#3: Jul 22 '05

re: How can I clear buffer between getch & cin?


John Harrison wrote:[color=blue]
> On Wed, 21 Jul 2004 20:31:04 GMT, voidstar <voidstar@tin.it> wrote:
>[color=green]
>> 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[/color]
>
>
> 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
>[/color]
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.
Mark R Rivet
Guest
 
Posts: n/a
#4: Jul 22 '05

re: How can I clear buffer between getch & cin?



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


On Tue, 27 Jul 2004 01:17:24 GMT, Ash <furroash@nb.sympatico.ca>
wrote:
[color=blue]
>John Harrison wrote:[color=green]
>> On Wed, 21 Jul 2004 20:31:04 GMT, voidstar <voidstar@tin.it> wrote:
>>[color=darkred]
>>> 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[/color]
>>
>>
>> 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
>>[/color]
>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.[/color]

Closed Thread