Ik wil in een console app in een loopje commando's kunnen intikken, daarvoor heb ik de volgende code gemaakt.
het is dus de bedoeling in main een regeltje tekst in cmd te stoppen en in processCommand wordt dan in eerste instantie het eerste woord van die regel genomen en gekeken wat dit woord is. In dit geval moet het programma stoppen als het eerste woord connect is.
Maar volgens mij zit het probleem niet in die functie maar in het getline gedeelte.
als het programma start krijg ik keurig op mn console schermpje "program started!"
als ik dan een regeltje tekst intik en op enter ram gebeurt er niks. als ik dan nog een keer een regel tik en deze wederom met enter afsluit, gaat de eerste regel naar de functie processCommand. en zo gaat na elke regel steeds de vorige regel naar de functie.
Als iemand mij kan uitleggen wat ik fout doe graag, want ik begin hier langzaam gek te worden.
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
| #include <iostream> #include <string> std::string cmd ; int running = 1 ; void processCommand () { std::string command ; std::cout << "processing: " << cmd << std::endl ; command = cmd.substr (0, cmd.find (' ')) ; std::cout << "command: " << command << std::endl ; if (command.compare ("connect") == 0) { running = 0 ; } } int main (int argc, char* argv []) { std::cout << "program started!" << std::endl ; // debug // start command loop while (running) { std::getline (std::cin, cmd) ; processCommand () ; } return 0 ; } |
het is dus de bedoeling in main een regeltje tekst in cmd te stoppen en in processCommand wordt dan in eerste instantie het eerste woord van die regel genomen en gekeken wat dit woord is. In dit geval moet het programma stoppen als het eerste woord connect is.
Maar volgens mij zit het probleem niet in die functie maar in het getline gedeelte.
als het programma start krijg ik keurig op mn console schermpje "program started!"
als ik dan een regeltje tekst intik en op enter ram gebeurt er niks. als ik dan nog een keer een regel tik en deze wederom met enter afsluit, gaat de eerste regel naar de functie processCommand. en zo gaat na elke regel steeds de vorige regel naar de functie.
Als iemand mij kan uitleggen wat ik fout doe graag, want ik begin hier langzaam gek te worden.
[ Voor 7% gewijzigd door Verwijderd op 02-10-2003 01:18 ]