Ik krijg een error bij dit stukje code:
Het doel is om van de string toets ( bevat de toetsnaam + .txt, dus toets.txt of nederlands.txt , dit wordt aan het begin ingevult.) .txt af te halen en er "-scores.txt" aan toe te voegen zodat je toets-scores.txt krijgt als toets.txt is ingevult. Het totale programma compileert prima alleen ik krijg deze error hij bij het stukje komt waar toets2.erase() wordt gebruikt:
Het hele toets geval werkt al, ik ben nu alleen bezig om een scoresysteem toe te voegen, en daarvoor moet ik eerst een correcte scorebestandsnaam hebben.
Alvast bedankt voor de mensen die hier zullen reageren
P.S. Ben nog niet zo lang bezig met C++
C++:
1
2
3
4
5
6
| scoreadd = "-scores.txt"; toetslengte = toets.length(); toetslengte2 = toetslengte - 4; toets = toets2; toets2.erase(toetslengte2, 4); scores = toets2 + scoreadd; |
Het doel is om van de string toets ( bevat de toetsnaam + .txt, dus toets.txt of nederlands.txt , dit wordt aan het begin ingevult.) .txt af te halen en er "-scores.txt" aan toe te voegen zodat je toets-scores.txt krijgt als toets.txt is ingevult. Het totale programma compileert prima alleen ik krijg deze error hij bij het stukje komt waar toets2.erase() wordt gebruikt:
Mijn complete code voor degene die het nodig hebben:quote: Errorterminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::erase
Aborted (core dumped)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
| #include <iostream> #include <fstream> #include <string> using namespace std; int main() { string naam, toets, toets2, scores, scoreadd; int keuze, toetslengte, toetslengte2; cout << "Welkom bij ZelfToets++!" << endl; cout << "Geef alstublieft je naam in: "; cin >> naam; cout << "\nTyp de bestandsnaam van de toets die je wil maken, bijv. toets.txt\n" << endl; cin >> toets; cout << "\n1) Maak de toets\n2) Bekijk de scores van deze toets.\n" << endl; cin >> keuze; scoreadd = "-scores.txt"; toetslengte = toets.length(); toetslengte2 = toetslengte - 4; toets = toets2; toets2.erase(toetslengte2, 4); scores = toets2 + scoreadd; cout << scores; switch (keuze) { case 1: { string vraag, antwoord, input; int vg = 0; int v = 0; ifstream toetsbestand(toets.c_str()); if (toetsbestand.is_open()) { while (! toetsbestand.eof() ) { getline (toetsbestand,vraag,'|'); getline (toetsbestand,antwoord); if (vraag.size() == 0) { break; } cout << "\n" << vraag << endl; cout << "\n"; cin >> input; if (input == antwoord) { cout << "\nCorrect! Je je antwoord was goed. Het was inderdaad " << antwoord << "!" << endl; vg++; } else { cout << "\nSorry, je had het niet goed. Het goede antwoord was " << antwoord << "." << endl; } v++; } toetsbestand.close(); cout << "\nOk, we zijn klaar!" << endl; cout << "\nJe had " << vg << " van de " << v << " vragen goed, " << naam << endl; cout << "Nu gaan we de scores naar het bestand schrijven"; } else { cerr << "\nDeze toets bestaat niet, of het bestand is al in gebruik!"; getchar(); } } break; case 2: { // Doe iets } break; default: { cout << "Je moet 1 of 2 invullen!" << endl; } break; } getchar(); return 0; } |
Het hele toets geval werkt al, ik ben nu alleen bezig om een scoresysteem toe te voegen, en daarvoor moet ik eerst een correcte scorebestandsnaam hebben.
Alvast bedankt voor de mensen die hier zullen reageren
P.S. Ben nog niet zo lang bezig met C++