[C++] inlezen integer

Pagina: 1
Acties:

  • woutertjez
  • Registratie: Januari 2001
  • Laatst online: 02-09 10:02
Ik wil een integer inlezen mbv cin.

De user geeft het uur aan en dit wordt vervolgens ingelezen.
Echter.... wanneer de user als uur 09 opgeeft, wordt alleen de 0 ingelezen:
code:
1
2
3
4
cout << "Hour: ";
cin >> utc_hour;
cout << "Minute: ";
cin >> utc_minute;

De 9 wordt vervolgens ingelezen voor utc_minute :?
Dit is dus niet de bedoeling! Is er een oplossing voor dat wanneer de user 09 opgeeft, enkel de 9 wordt ingelezen? En dan dus wel voor utc_hour en niet voor utc_minute :)

Of zit ik vast aan het gebruik van het inlezen als characters en daarna atoi() te gebruiken?

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
cin.getline() misschien ?

  • woutertjez
  • Registratie: Januari 2001
  • Laatst online: 02-09 10:02
Op die manier wordt 't als een character ingelezen en 't moet dus gewoon een integer zijn.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

woutertjez:
Op die manier wordt 't als een character ingelezen en 't moet dus gewoon een integer zijn.
cin.getline(), leading zeros eraf halen, checken of er een geheel getal overblijft, en vervolgens casten/converteren naar int. anders fout, en nog een keertje ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • tomato
  • Registratie: November 1999
  • Niet online
woutertjez: Op die manier wordt 't als een character ingelezen en 't moet dus gewoon een integer zijn.
En uit die string (of whatever dat in C++ is, character array ofzo... :?) kun je prima de integer waarde halen...

  • tomato
  • Registratie: November 1999
  • Niet online
drm: casten/converteren naar int
Liefste dat tweede he ;)

  • woutertjez
  • Registratie: Januari 2001
  • Laatst online: 02-09 10:02
mja... hier was ik dus al bang voor ;)

Het is dan waarschijnlijk niet mogelijk om het zonder gedoe met characters te doen.

  • tomato
  • Registratie: November 1999
  • Niet online
woutertjez: mja... hier was ik dus al bang voor ;)

Het is dan waarschijnlijk niet mogelijk om het zonder gedoe met characters te doen.
Euh... maar wat had je verwacht dat je huidige programma zou doen wanneer je bijvoorbeeld een 'b' ipv een '9' invoerde :?

  • woutertjez
  • Registratie: Januari 2001
  • Laatst online: 02-09 10:02
Dit invoeren is eigenlijk voor testdoeleinden bedoeld. Het is meer een prototype. De uiteindelijk functie die gebruikt deze waarde. Deze functie die wordt dus straks ergens anders gebruikt, en dan ga ik er vanuit dat de invoer gewoon correct is :)

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
09 is geen geldige integer (probeer maar eens int i = 09; te doen, lukt niet). En als cin geen geldige integer kan creeren (waar er wel om wordt gevraagd) dan wordt de "input" gelijk aan 0. Komt een beetje neer op als je om een cijfer vraagt en de gebruiker voert een letter in, dan wordt de integer waar het in zou moeten gelijk aan 0.

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

_Mo_: sorry maar dat is echt onzin :)
09 is idd geen geldige integer als je het als constante gebruikt, maar dat komt omdat de compiler het ziet als een octaal getal ipv een decimaal getal, doordat de 0 ervoor staat (vergelijkbaar met 0x voor hexadecimaal)

cin zal heus niet geen geldige integer kunnen creeren omdat de compiler het ook niet pakt, tenzij dat echt specifiek is geprogrammeerd (wat het geval niet is). Als je echt een octaal getal in wilt lezen dan kun je gewoon de setbase () manipulator gebruiken.

Anyway, woutertjez: dit kleine proggie:
code:
1
2
3
4
5
6
7
8
int main ()
{
    int i = 2;
    cout << "voer een getal in: ";
    cin >> i;
    cout << i << endl;
    return 0;
}

geeft bij mij dit als output
code:
1
2
voer een getal in: 09
9

(maw, i is gewoon 9 als ik 09 invoer)
zijn utc_hour en utc_minute wel van het type int? (ik vermoed namelijk dat ze van het type char zijn)

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.

Pagina: 1