Beispiel 10: token10.h

05.12.2016 10:31 Uhr
#include <iostream>

using namespace std;
#include <fstream>

#include "token10.h"

int main()
{
ifstream eingabe;
ClToken token;

eingabe.open("daten.xml");
for (;;)
    {
    if (token.getToken(eingabe)==0) break;
    cout << "Token: " << token.start() << " - " << token.inhalt() << " - " << token.end() << endl;
    }
eingabe.close();
}

Beispiel 10: Erläuterungen zur Bibliothek

#include <iostream>

using namespace std;
#include <fstream>
#include <string.h>
Verwende zusätzliche Funktionen für die Verwendung
von Null-begrenzten Zeichenketten
#include "token10.h"

int  ClToken::getToken(
ifstream              &datei)
{
int zaehler, zustand;
char zeichen;
char puffer[100];

for (zaehler=0;;)
    {
    datei.get(zeichen);
    if (datei.eof()) return 0;
    switch(zeichen)
       {
    case '<':
       datei.get(zeichen);
       if (zeichen=='/')
          {
          zustand=1;
          if (zaehler!=0)
             {
             puffer[zaehler]='\0';
             tokenInhalt = new char[zaehler+1];
             strcpy(tokenInhalt,puffer);
strcpy(ziel,quelle) : Kopiere die
MIT EINEM STRINGENDEZEICHEN BEGRENZTE Zeichenkette 'quelle' in die
Zeichenkette 'ziel'. Benutzerin (== Sie!) ist verantwortlich,
dass 'ziel' gross genug dimensioniert ist.
             }
          }
       else
          {
          zustand=0;
          datei.putback(zeichen);
datei.putback(zeichen);


Stelle das Zeichen 'zeichen' in den Eingabestrom 'datei'
zurück, sodass beim nächsten Lesen aus 'datei', durch
datei.get(zeichen) das zurückgestellte Zeichen wiedergelesen wird.

          }
       zaehler=0;
       break;
    case '>':
       puffer[zaehler]='\0';
       if (zustand==0)
          {
          tokenStart = new char[zaehler+1];
          strcpy(tokenStart,puffer);
          }
       else
          {
          tokenEnde = new char[zaehler+1];
          strcpy(tokenEnde,puffer);
          return 1;
          }
       zaehler=0;
       break;
    case '\n':
       break;
    default:
       puffer[zaehler]=zeichen;
       zaehler++;
       break;
       }
    }
}

Anhang: example10.zip

Schlagwörter: