Avatar billede dehdar Nybegynder
13. april 2008 - 00:29 Der er 5 kommentarer og
1 løsning

istream driller!

Hej, jeg har skrevet et relativt stort program, hvor jeg skiftevis benytter mig af getch(), getline(x1, x2) og cin >>. Jeg har også overloaded cin i henhold til et bestemt objekt.

Mit problem er nu, at jeg nogle steder i min kode automatisk får et input. Hvis jeg f.eks. skriver et bestemt sted i min kode: cin >> objekt, så kan mit program finde på at springe over bruger input. Er der nogen som umiddelbart kan forklare hvorfor? Jeg har på fornemmelsen, at getline og getch ikke overskriver bufferen og at cin derfor bare tager det tal som står i bufferen, uden at vente på bruger input?

På forhånd tak for hjælpen.
Avatar billede bertelbrander Novice
13. april 2008 - 00:50 #1
Måske kan du fixe det ved at bruge:
std::cin.ignore(1024, '\n')
inden de steder hvor den "hopper over"
Se også:
http://www.cplusplus.com/reference/iostream/istream/ignore.html
Avatar billede dehdar Nybegynder
13. april 2008 - 01:33 #2
Det har jeg også gjort..., men har du en ide om hvorfor det sker og hvordan man typisk vil undgå det?
Avatar billede dehdar Nybegynder
13. april 2008 - 01:35 #3
Jeg kan selvfølgelig skrive cin.ignore(1024, '\n') inden hvert eneste bruger input, men der må være en forklaring på, hvad der sker og hvorfor? :(
Avatar billede dehdar Nybegynder
13. april 2008 - 02:01 #4
ahh nm, fandt ud af det. Grunden er åbenbart at cin >> efterlader en newline i bufferen som getline æder og derfor bliver sprunget over. Det er også det du var inde på bertel, så tak for svaret :)
Avatar billede dehdar Nybegynder
13. april 2008 - 17:36 #5
hov! jeg mente whitespace og ikke newline :)
Avatar billede dehdar Nybegynder
08. juli 2008 - 23:47 #6
lukket (og nej, det er newline der bliver efterladt)
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