kleine Parser-Probleme
-
Hallöchen !!
Ich will nen kleinen Parser schreiben und hab mit "strtok" auch ne recht einfache Methode gefunden nen Text zu zerpflücken.
Das Format der einzulesenden Wörter sieht so aus:
G_STRING1_STRING2 ..blabla
L_STRING1_STRING2 ..blablaDas Programm ist ersmal nur provisorisch. Erst wir geschaut ob bis zum ersten "" ein G oder L steht und dann soll das Wort bis zum nächsten "" gelesen und mit switch ausgewertet werden.
#include <iostream> #include <fstream> #include <string> using namespace std; int main () { char cDataBuffer[128]; char *token; ifstream InStream ("bla.txt"); // solange, bis Datei am Ende while (!InStream.eof()) { // Zeilenweise einlesen InStream.getline(cDataBuffer,sizeof(cDataBuffer)); // Alles was vor " " steht in token speichern token = strtok(cDataBuffer,"_"); // Wenn G dann ... if(token = "G") { token = strtok(0,"_"); // Welches Wort kommt als nächstes switch(token) { case "AREA": cout << endl << token; case "BLACKLEVEL": cout << endl << token; }; if(token = "L") { token = strtok(0,"_"); switch(token) { case "AREA": cout << endl << token; case "BLACKLEVEL": cout << endl << token; }; }; return 0; };
Ich bekomme folgende Fehlermeldung:
main.cpp:27: error: switch quantity not an integer main.cpp:41: error: switch quantity not an integer main.cpp:89: error: syntax error at end of input
Ich glaube es hat etwas mit den Variablentypen zu tun, weiß aber nicht wie es besser gehen muß.
Grüße,
Lutz
-
Switch geht nicht mit strings.
Nur mit Zahlen bzw. einzelnen Zeichen (also 'a' )
if , else if , else ggf. wäre auch der Einsatz von map zu prüfen.
-
Och, Schade
Dann werd ich mich mal mit if und else quälen. Ist nur leider nicht so schön übersichtlich wie switch.
Danke !!!!!