Toon posts:

C++ try catch exception voor cin

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil hetvolgende

Een integer inlezen met cin
Dit wil ik in een try catch zetten.

Wat is de exception handler hiervoor?

int t;
try
{
cin >> t;
} catch(???? e) { t=0[ }

  • Fvdlaar
  • Registratie: Oktober 2001
  • Laatst online: 06-08 10:57
Volgens mij geeft cin helemaal exceptions.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

C++ :? try/catch cin :?
* D2k vraagt zich af wat ie mist?

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Hoe kan ik dan afvangen of de invoer een integer is?

Kan wel met string doen en dan converteren naar int, maar dit is niet netjes.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:53
Dat zal toch waarschijnlijk zo moeten, tenzij één van de C++ guru's hier een andere oplossing weet...

Een exception wordt trouwens enkel getrowed als er een fout is opgetreden. Een alfanumeriek teken in een integer inlzen kun je wel als fout beschouwen, maar er zal daar geen exception voor getrowed worden denk ik.

https://fgheysels.github.io/


  • Juicy
  • Registratie: December 2000
  • Laatst online: 16:33
Met cin, lees je dus 1 karakter. Waar ben je eigenlijk in aan het kloten ? :)

-


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

uit de MSDN:
If the converted value cannot be represented as the type of n, the function calls setstate(failbit)
oftewel, failbit wordt geset als de invoer geen integer is (wat je kut checken met de functie rdstate ())

als je exceptions gethrowed wilt hebben dan moet je van te voren dit doen
code:
1
cin.exceptions (cin.exceptions () | failbit);

nu genereert ie elke keer als de failbit geset wordt een exception van het type failure

dus met catch (failure f) kun je m catchen

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.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op dinsdag 19 februari 2002 19:29 schreef Juicy het volgende:
Met cin, lees je dus 1 karakter. Waar ben je eigenlijk in aan het kloten ? :)
:?

das dus niet waar, met de >> operator op cin lees je een getal/string/whatever, niet maar 1 character (ja als het type een char is ja :))

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.


  • Juicy
  • Registratie: December 2000
  • Laatst online: 16:33
Ik vroeg al waar hij in aan het rotzooien is ...

-


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

hij is niet aan het rotzooien, en hij is bezig in C++ (zie topictitel)

verder snap ik ook niet helemaal wat je nou precies bedoelt :?

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.


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Voor alle duidelijkheid, als je niet wilt catchen, zou je dit kunnen doen:
code:
1
2
3
4
5
6
7
8
9
int t;

cin >> t;

if (cin)
{
  // fout!
  // ...
}

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 23:11
Op dinsdag 19 februari 2002 19:45 schreef OiSyN het volgende:
uit de MSDN:
[..]

oftewel, failbit wordt geset als de invoer geen integer is (wat je kunt checken met de functie rdstate ())
Klein opmerkingkje om compleet te zijn: 't is geen free function maar een member functie van cin, dus cin.rdstate().

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1