[C++] input zonder op enter te drukken

Pagina: 1
Acties:

  • Mg-02
  • Registratie: Oktober 2005
  • Laatst online: 28-09-2023
Hoi,

Ik ben bezig met het maken van een applicatie en ik wil invoer gebruiken.
Ik wil dat de invoer meteen verwerkt wordt zonder dat er op enter gedrukt wordt, bij elke spatie( dus nieuw woord) zou de applicatie direct moeten reageren.
Ik weet niet of het uberhaubt wel mogelijk is.

Ik heb het geprobeert met cin, maar die wacht op de enter.

ik gebruik visual studio C++ onder windows xp.

bedankt.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gaat het over een win32 (GUI) applicatie? Console applicatie? Heb je wat meer informatie? Heb je code die je tot nu toe hebt?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23-04 02:19
Dit kan niet met de C++ standard library. Je zult dus een platformafhankelijke functie moeten gebruiken; getch() werkt onder Windows wel.

Zie bijvoorbeeld de MSDN library voor een voorbeeld:
http://msdn.microsoft.com...rt__getch.2c_._getche.asp

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Soultaker schreef op woensdag 19 oktober 2005 @ 01:54:
Dit kan niet met de C++ standard library. Je zult dus een platformafhankelijke functie moeten gebruiken; getch() werkt onder Windows wel.

Zie bijvoorbeeld de MSDN library voor een voorbeeld:
http://msdn.microsoft.com...rt__getch.2c_._getche.asp
Kun je geen keypress event ofzo vangen?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Jawel, maar ook dat is geen standaard C++ :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Soultaker schreef op woensdag 19 oktober 2005 @ 01:54:
Dit kan niet met de C++ standard library. Je zult dus een platformafhankelijke functie moeten gebruiken; getch() werkt onder Windows wel.

Zie bijvoorbeeld de MSDN library voor een voorbeeld:
http://msdn.microsoft.com...rt__getch.2c_._getche.asp
En als je curses gebruikt onder linux werkt getch daar ook.
quote: man getch
NAME
getch, wgetch, mvgetch, mvwgetch, ungetch, has_key - get (or push back)
characters from curses terminal keyboard

[ Voor 16% gewijzigd door GX op 19-10-2005 10:50 ]


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Ik wilde het ooit voor een linux console applicatie en vond toen dat het zo moest:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* Allows reading a single keypress from stdin */
void setConsoleUnbuffered() {
  struct termios current;
  tcgetattr(0, &current);
  current.c_lflag &= ~ICANON;
  tcsetattr(0, TCSADRAIN, &current);
}

/* Return console to usual buffered status */
void setConsoleBuffered() {
  struct termios current;
  tcgetattr(0, &current);
  current.c_lflag |= ICANON;
  tcsetattr(0, TCSADRAIN, &current);
}

Wie trösten wir uns, die Mörder aller Mörder?


  • Mg-02
  • Registratie: Oktober 2005
  • Laatst online: 28-09-2023
Heel erg bedankt
Ik heb nu de getche gebruikt en die werkt erg goed.
zie onderstaande code. ik heb de tilde als eind toets ingebouwd, zodat ik alles kan tikken zonder dat hij er uit klapt. Ik moet nu alleen nog iets schrijven zodat hij worden kan lezen.

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* GETCH.C: This program reads characters from
 * the keyboard until it receives a 'Y' or 'y'.
 */

#include <conio.h>
#include <ctype.h>
#include <string>

void main( void )
{
   int ch;

   _cputs( "Type '~' when finished typing keys: " );
   do
   {
      ch = _getche();
      ch = toupper( ch );
   } while( ch != '~' );

   _putch( ch );
   _putch( '\r' );    /* Carriage return */
   _putch( '\n' );    /* Line feed       */

}

[ Voor 10% gewijzigd door Mg-02 op 19-10-2005 12:57 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Een tip: zet code tussen [code=taal]... je code hier ...[/code] tags :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Mg-02
  • Registratie: Oktober 2005
  • Laatst online: 28-09-2023
Weet Iemand of het ook mogelijk dit allemaal te doen binnen een opengl window. De bovenstaande code wordt uitgevoerd in een console window.

of is het mogelijk om input te geven aan het console zonder dat deze zichtbaar is in beeld. Ik wil namelijk alleen het opengl scherm zien.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23-04 02:19
Heeft GLUT niet eigen invoermechanismen?

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Je gebruikt al een normale console om je input af te vangen Mg-02, dus deze zelfde methode zou daarvoor moeten werken.
Pagina: 1