Avatar billede emileej Nybegynder
15. februar 2003 - 15:56 Der er 5 kommentarer og
1 løsning

Læse fra cin

Jeg har lavet følgende funktion til at læse input fra tastaturet uden at blokere. Problemet er, tror jeg, at buff->in_avail() ikke fungerer ordentligt eller at jeg på een eller anden måde bruger den forkert.
Min funktion:

string UpdateInput(string inp){
    streambuf *buff=cin.rdbuf();
    if(buff->in_avail()){
        char c=buff->sbumpc();
        if((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z'))
            inp+=c;
        else if(c == '\n'){
            HandleInput(inp);
            inp="";
            cin.clear();
        }
    }
    return inp;
}

Kan virkeligt ikk se hvad der ellers skulle være galt...
E-)mil
Avatar billede krukken Juniormester
17. februar 2003 - 12:09 #1
prøv med getc()
Avatar billede emileej Nybegynder
17. februar 2003 - 12:11 #2
kbhit() og getc() virker selvfølgeligt, men jeg vil gerne bruge streams - for hermed at kunne udskifte cin med en anden stream...
Avatar billede mikef Nybegynder
19. februar 2003 - 13:30 #3
Hvad er egentligt problemet her?
Så vidt jeg kan se, bruger du HandleInput med parameteren inp. Samtidigt har du hele tiden inp til at pege der, hvor næste karakter skal placeres, hvilket gør, at HandleInput ikke har noget fornuftigt at arbejde med.
Avatar billede emileej Nybegynder
19. februar 2003 - 18:04 #4
inp peger ingen steder. inp er en string, der får tilføjet et tegn hvis der er eet i cin og derefter bliver inp returneret - evt. sendt til HandleInput først.
Eksemplet herover fungerer 100% med getch() og kbhit() - det er med cin og ikke inp der er et problem.
Avatar billede emileej Nybegynder
09. januar 2006 - 14:51 #5
Rimeligt gammel tråd. Lukker.
Avatar billede krukken Juniormester
09. januar 2006 - 16:04 #6
Fandt du svaret - og hvordan gjorde du?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester