Gå til innhold

Lese userinput uten å måtte trykke ENTER ?


Anbefalte innlegg

Eg har lett en stund nå etter en mulighet for å lese userinput uten å måtte trykke enter etter å ha skrevet inn en bokstav.

 

Eksempelvis en meny der du har valg mellom 1. 2. og 3. og trykker tallet tilhørende menyvalget, og at programmet automatisk går videre etter ett tastetrykk, og at en ikke må først trykke nummeret og deretter enter.

 

Noen som vet om dette er mulig å få til på en enkel måte?

 

Kan kanskje også legge på et ekstraspørsmål, om det er mulig å sette en grense på hvor mange tegn som eg vil at brukeren skal kunne skrive inn? Eg mener at console-pekeren stopper etter et angitt antall bokstaver er skrevet inn?

Endret av _TT_
Lenke til kommentar
Videoannonse
Annonse
Eg har lett en stund nå etter en mulighet for å lese userinput uten å måtte trykke enter etter å ha skrevet inn en bokstav.

 

Eksempelvis en meny der du har valg mellom 1. 2. og 3. og trykker tallet tilhørende menyvalget, og at programmet automatisk går videre etter ett tastetrykk, og at en ikke må først trykke nummeret og deretter enter.

 

Noen som vet om dette er mulig å få til på en enkel måte?

 

Kan kanskje også legge på et ekstraspørsmål, om det er mulig å sette en grense på hvor mange tegn som eg vil at brukeren skal kunne skrive inn? Eg mener at console-pekeren stopper etter et angitt antall bokstaver er skrevet inn?

6661071[/snapback]

 

 

Må vel bruke en løkke her da, skal prøve:

 

#include <iostream>
#include <conio.h>

using namespace std;

int main(int argc, char *argv[])
{
bool finished = false; // bare for å kunne kjøre løkken så lenge som trengs
int answer = 0; // Denne skal holde svaret til bruker, initialiseres med 0

cout << "Skriv inn svar: ";


while( finished == false )
{
       if( kbhit() ) /* kbhit sjekker om noe er blitt trykket på på tastaturet */
       {
 	answer = getch(); // getch() henter bokstaven/tallet du trykket på
           finished = true;
       }
}

cout << endl << (char)answer << endl;  
// input må gjøres om til asci, ellers får du helt feil output, derfor (char)answer

cout << "Trykk enter for A avslutte" << endl;
getchar(); // så programet ikke skal avslutte før du trykker enter på slutten
return 0;
}

 

Er kanskje ikke best skrevet, men du må jo nesten skrive det om for å få til det du skal ha gjort i programmet ditt :)

 

EDIT:

Kian_Alvane var først :)

Endret av kimla
Lenke til kommentar

Takker for svar, er nok brukbart dette, men støtte på et liten merklighet;

 

I Visual C++ fungerer koden uten noe merkbare problemer, men hvis eg kompilerer koden min med DJGPP får eg en "lagg" på det eg skriver inn. Dvs at tastetrykkene mine ikke kommer til syne før eg trykker enda en gang på en hvilken som helst knapp.

Noen som har noen idet hvorfor dette skjer?

 

EDIT: Fungerte uten "lagg" hvis eg la til endl; etter eg cout'et bokstaven.

Endret av _TT_
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...