Avatar billede dehdar Nybegynder
11. december 2007 - 20:46 Der er 9 kommentarer og
1 løsning

Validation af inputs c++ Visual Studio

Hej, jeg har op til flere gange brugt følgende funktioner til at validere inputs uden rigtigt at vide præcist, hvad de forskellige funktioner gør. Derfor vil jeg sætte stor pris på en detaljeret beskrivelse af nedstående tre funktioner.

cin.fail();

Som jeg har forstået, så returnerer denne funktion true, hvis vi forsøger at gemme en korrekt værdi i bufferen og false, hvis vi forsøger at gemme en forkert værdi. F.eks. vil funktionen returnere false, hvis vi har allokeret plads i bufferen til en integer datetype og forsøger at gemme en char værdi. Lige et offtopic spørgsmål, når man generelt skriver hukommelsen, så menes der bufferen ikke?

cin.clear();

Denne funktion sletter indholdet af vores input stream (jeg aner ikke hvordan det skal formuleres, for jeg forstår ikke helt, hvad der sker andet end, at det man gemmer ryger i bufferen), således, at cin.fail() igen er nulstillet, så vi kan indtaste en ny værdi?

cin.ignore( x, '\n' );

Afhængig af x, så ignorer denne funktion de tal og bogstaver, som står i bufferen og "\n" ignorer linjeskift, således at vores output stream ikke ændrer tilstand efter en forkert indtastning, indtil f.eks. vi har indtastet en korrekt værdi.

Er jeg helt forkert på den eller?

På forhånd tak for hjælpen.
Avatar billede arne_v Ekspert
11. december 2007 - 21:13 #1
fail er omvendt - som navnet antyder: true hvis fejl, false hvis OK
Avatar billede arne_v Ekspert
11. december 2007 - 21:18 #2
ignore skipper tegn intil enten antal tegn er laest eller angivne tegn er fundet

ignore(10,'\n') vil laese indtil man enten har laest 10 tegn eller har laest et linieskift
Avatar billede arne_v Ekspert
11. december 2007 - 21:19 #3
clear saetter status flag og ikke andet
Avatar billede arne_v Ekspert
11. december 2007 - 21:20 #4
Avatar billede dehdar Nybegynder
11. december 2007 - 21:29 #5
Hvordan skal cin.clear forstås? Jeg forstår ikke hvad der menes med status flag? Det er betegnelse flag som forvirrer mig.
Avatar billede arne_v Ekspert
11. december 2007 - 21:34 #6
et flag er bare en true/false vaerdi

http://www.cplusplus.com/reference/iostream/ios/clear.html

siger at der er 3 error flag som kan cleares
Avatar billede dehdar Nybegynder
11. december 2007 - 21:38 #7
Okay, så tror jeg nogenlunde jeg har styr på det. Vil lige læse dine links igennem og sunde mig lidt over det overflow af information jeg lige har fået :)

Tusind tak for hjælpen :)

PS: Hvordan giver jeg brugere points for den hjælp jeg har fået?
Avatar billede arne_v Ekspert
11. december 2007 - 21:41 #8
naar jeg smider et svar kan du acceptere det
Avatar billede dehdar Nybegynder
11. december 2007 - 21:44 #9
Tak igen :) Den funktion får jeg nok brug for en hel del i fremtiden :P
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