Ik ben bezig met het doorwerken van een c++ boek met opgaven. Voor een van die opgaven heb ik het volgende programma geschreven:
Het programma vraagt om twee gegevens "Employee name" en "Employee number", slaat deze op in een element van een array van object Emp. In mijn geval wordt er 10 keer om een input gevraagd. De eerste keer gaat goed, maar bij de tweede keer (en de daarop volgende keren) wordt de input op de eerste vraag overgeslagen zoals bijvoorbeeld:
Ik kan hier alleen nog maar het employee number invoeren. De output klopt uiteindelijk wel met de gegeven input. Het lijkt er haast op dat mijn <enter> om input mee af te sluiten te snel is, ook al lijkt me dat nogal onwaarschijnlijk.
Om uit te zoeken waar het aan kan liggen heb ik verschillende stukken code verplaatst, bijvoorbeeld de input in de loop in plaats van in de class. Ook heb ik een van de twee inputvragen uitgezet, dit werkt wel. Dus
en
werkt allebei.
Ik heb hier de string documentatie bekeken, maar daar wordt ik mbt dit probleem niet echt wijzer van. Verder heeft de voorbeeldcode hetzelfde probleem. Ik compileer met de g++ compiler van kubuntu. Weet iemand wat ik fout doe?
C++:
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
36
37
38
39
40
41
42
| #include <iostream> #include <string> using namespace std; class employee { private: string EmpName; long EmpNumber; public: void getdata() { cout << "Enter employee name: "; getline(cin, EmpName); //om ook input met spaties toe te staan cout << "and employee number: "; cin >> EmpNumber; } void showdata () { cout << "Employee " << EmpName << "\tNumber: " << EmpNumber << endl; } }; int main() { const int MAX = 10; employee Emp[MAX]; int CheckMax = 0; for (CheckMax; CheckMax<MAX; CheckMax++) { Emp[CheckMax].getdata(); } for (int j=0; j<CheckMax; j++) { Emp[j].showdata(); } return 0; } |
Het programma vraagt om twee gegevens "Employee name" en "Employee number", slaat deze op in een element van een array van object Emp. In mijn geval wordt er 10 keer om een input gevraagd. De eerste keer gaat goed, maar bij de tweede keer (en de daarop volgende keren) wordt de input op de eerste vraag overgeslagen zoals bijvoorbeeld:
Enter employee name: bla bla and employee number: 3 Enter employee name: and employee number:
Ik kan hier alleen nog maar het employee number invoeren. De output klopt uiteindelijk wel met de gegeven input. Het lijkt er haast op dat mijn <enter> om input mee af te sluiten te snel is, ook al lijkt me dat nogal onwaarschijnlijk.
Om uit te zoeken waar het aan kan liggen heb ik verschillende stukken code verplaatst, bijvoorbeeld de input in de loop in plaats van in de class. Ook heb ik een van de twee inputvragen uitgezet, dit werkt wel. Dus
C++:
1
2
3
4
5
6
7
| void getdata() { //cout << "Enter employee name: "; //getline(cin, EmpName); //om ook input met spaties toe te staan cout << "and employee number: "; cin >> EmpNumber; } |
en
C++:
1
2
3
4
5
6
7
| void getdata() { cout << "Enter employee name: "; getline(cin, EmpName); //om ook input met spaties toe te staan //cout << "and employee number: "; //cin >> EmpNumber; } |
werkt allebei.
Ik heb hier de string documentatie bekeken, maar daar wordt ik mbt dit probleem niet echt wijzer van. Verder heeft de voorbeeldcode hetzelfde probleem. Ik compileer met de g++ compiler van kubuntu. Weet iemand wat ik fout doe?
This too shall pass
Debian | VirtualBox (W7), Flickr