[c++] zwevende enter

Pagina: 1
Acties:

  • THIJZEL
  • Registratie: Januari 2001
  • Niet online
hoi, ik roep in dit stukje van me menu de functie deb_add aan, maar die krijgt meteen een enter mee waardoor me eerste cin<<word ingevult met niks.. hoe los ik dit op??

dit is trouwens maar een gedeelte van de functie menu();
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
begin:
 clrscr();
 navigeer=0;
 cout<<"menu: \n";
 cout<<"1. Toevoeg menu\n";
 cout<<"2. Verwijder menu\n";
 cout<<"3. Opvraag menu\n";
 cout<<"4. wijzigen menu\n";
 cout<<"5. afsluiten\n";
 cin>>navigeer;
 clrscr();
    switch(navigeer)
    {
        case 1:{
               clrscr();
               cout<<"maak je keuze:\n";
               cout<<"1. voeg een debiteur toe.\n";
               cout<<"2. voeg een crediteur toe.\n";
               cout<<"3. voeg een betaling toe.\n";
               cout<<"4. ga terug.\n";
               cin>>temp;
               navigeer= (temp+(navigeer*10));
               switch(navigeer)
               {
                case 11: {ostream& flush();deb_add();}//voer hier de deb invoer functie uit..
                case 12: {/*cred_add();*/}//voer hier de cred invoer functie uit.
                case 13: {cout<<navigeer;getch();}//voer hier de betaling functie uit..
                case 14: {
                        navigeer = 0;
                        goto begin;
                     }
                default:{goto begin;}                       }
             }

de deb_add functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void deb_add()
{
    clrscr();

    //inlezen van de gegevens
    cout << "Toevoegen van Debiteuren\n";
    cout << "Naam: ";
    cin.getline(klant.knaam,1024);
    cout << "Adres: ";
    cin.getline(klant.kadres,1024);
    cout << "Plaats: ";
    cin.getline(klant.plaats,1024);
    cout << "Telefoonnummer: ";
    cin >> klant.telnr;
    cout << "Bankrekening nummer: ";
    cin >> klant.banknr;
    klant.debcre=1;

    //controleren van de gegevens
    cout << "Naam:       " << klant.knaam << "\n";
    cout << "Adres:     " << klant.kadres << "\n";
    cout << "Plaats:       " << klant.plaats << "\n";
    cout << "Telefoonnummer: " << klant.telnr << "\n";
    cout << "Banknummer:     " << klant.banknr << "\n";

    cout << "Zijn de gegevens correct? (Y/N)\n";
    keuze = getche();
    cout << "\n";
    if (keuze=='y')
    {
        file.open("klanten.dat", ios::out|ios::binary|ios::ate);
        file.write((char*)&klant,sizeof(klant));
    }
  menu();
}

  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX/AI
Hmm ik moet eerlijk zeggen dat ik niet zeker weet wat je psies bedoelt maar je kan een extra cin ervoor zetten, die wordt dan gevuld met die enter.

Saved by the buoyancy of citrus


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
<cstdio> includen en getchar() aanroepen voor je cin.getline(). Dat flusht de keyboard buffer.

  • THIJZEL
  • Registratie: Januari 2001
  • Niet online
Op dinsdag 14 mei 2002 21:15 schreef Cyphax het volgende:
Hmm ik moet eerlijk zeggen dat ik niet zeker weet wat je psies bedoelt maar je kan een extra cin ervoor zetten, die wordt dan gevuld met die enter.
hebk al geprobeerd
<cstdio> includen en getchar() aanroepen voor je cin.getline(). Dat flusht de keyboard buffer.
hebk ook al geprobeerd, krijg nog steeds hetzelfde


de complete source: http://tdj.djs.org/GROEP.CPP

  • AlexAuto
  • Registratie: Februari 2001
  • Laatst online: 17:49

AlexAuto

Parttime Tweaker

Dit probleem had ik ook. Na veel speurwerk heb ik deze site kunnen opzoeken.
code:
1
2
if (opcion == 'S') {  cout << "Domicilio : " ; cin.get();
cin.getline(domicilio,sizeof(domicilio));}

Het is in het Spaans, maar het werkt in ieder geval wel. Zo fietst ie niet naar de volgende getline....
code:
1
   cin.get();cin.getline(lid.achternaam,sizeof(lid.achternaam));

[ Off: hehe :P , eindelijk na veel geouwehoer :) ;) ]