Textparser - Frage zu Zeichen in einer Datei
-
Ja, und zwar geht es mir darum, was für Zeichen auftreten können. Ich lese eine datei mit parametern ein, die durch Leerzeichen getrennt sind.
Momentan funktioniert mein Parser so (vereinfacht!)
std:ostringstream wort; while(!Abbruchbedingung){ char c = Zeicheneinlesen(); switch (c){ case Leerzeichen: tuWasMitDemWort(wort); wort.leeren(); break; case '\r': // ignorieren break; case '\n': // ignorieren break; default: wort << c; }Aber irgendwie werden ab und an doch merkwürdige Zeichen eingelesen, ich vermute es handelt sich dabei um Tabulatoren. Denn mein Debuggerfenster meldet:
----------------- Zeichen: o Zeichen: p Zeichen: _ Zeichen: r Zeichen: e Zeichen: _ Zeichen: s Zeichen: t Zeichen: a Zeichen: r Zeichen: t Zeichen: p Zeichen: o Zeichen: s Zeichen: [][][][] // im Fenster stehen an Stelle der [] viereckige Platzhalter Zeichen: S Zeichen: U Zeichen: B Zeichen: O Zeichen: P Zeichen: E Zeichen: R Zeichen: A Zeichen: T Zeichen: I Zeichen: O Zeichen: N Zeichen: Leerzeichen, Wortende (op_re_startposSUBOPERATION) handleWord(op_re_startposSUBOPERATION) Befinde mich im Command-State FEHLER: Parser meldet unbekanntes Wort 'op_re_startposSUBOPERATION'also, was gibt es noch für Zeichen, die ich im case ignorieren muss? Wie ist das char für den Tabulator definiert?
-
case '\x20': case '\f': case '\t': case '\r': case '\n': break;
-
benutz doch stringstream.

std::string s; std::cin >> s; // liest ein Wort bis zum Leerzeichen.
-
@neku: danke, probier ich morgen auf der arbeit aus!
ach übrigens, welches ist was? ich will tabulatoren als abbruchkriterium behandeln, und zeilenumbrüche, was ist der rest?@hmmmmmm:
nunja, ich hab es wie gesagt vereinfacht. momentan ist nur das leerzeichen ein abbruchkriterium. es kommen aber noch andere dazu, "," und ";" zum beispiel. daher mache ich es auf diese weise.
-
ah, okay... hab jetzt mal etwas ordentlicher gegoogelt
Escape Sequence Represents \a Bell (alert) \b Backspace \f Formfeed \n New line \r Carriage return \t Horizontal tab \v Vertical tab \' Single quotation mark \" Double quotation mark \\ Backslash \? Literal question mark \ooo ASCII character in octal notation \xhhh ASCII character in hexadecimal notation