# Mit C++ Textdateien parsen



## Weizentrinker (30. März 2008)

Also ich möchte eine Textdatei durchsuchen nach Schlüsselwörten und von diesen Stellen Daten entnehmen. Gibt es da nen Tutorial wie man das macht ? Habe leider nichts gefunden was ich verstanden habe. 

Danke schonmal, Grüße Thomas


----------



## Teambeta (30. März 2008)

Entweder du liest jede Zeile komplett aus, und teilst dann die Zeichenkette auf( etc. ), 
oder du liest jedes Zeichen einzeln und verwaltest nebenbei ein wachsendes Array, das bis zum Leerzeichen Daten aufnimmt.

Wie genau du das anstellst bleibt dir überlassen.

Falls du noch mehr hilfe brauchst, dann meld dich einfach nochmal hier im Forum.


----------



## anhadikal (31. März 2008)

Hmm soll es nur für WIndows sein, dann kann ich INF empfehlen, es gibt Funktionen, die dir sehr viel Arbeit ersparen ...
---------

Ansosten, wie oben schon erwähnt halt jede zeile auslesen und nach bestimmten Kreterien teilen und analysieren.

Siehe dazu fopen, fclose, fread, strstr, split, etc 

MfG


----------



## Ryu1991 (1. April 2008)

anhadikal hat gesagt.:


> Siehe dazu fopen, fclose, fread, strstr, split, etc
> MfG



Da er C++ verwenden möchte würde ich ehr zu fstream und std::strings raten^^


----------



## Weizentrinker (2. April 2008)

hm also im Optimalfall wollte ich das mit "Tokens" machen, wobei ich selber nicht mal genau weiss was das genau ist. Da das ganze für mein Studium abgegeben werden muss, soll ich das ganze per flex oder bison schreiben, wobei ich bislang einfach nicht verstehe wie das Grundprinzip dahinter aussieht. Es wäre also super wenn jemand nen einfaches tutorial zu dem Thema kennt oder vllt nen bissl beispielcode über hat.

Danke schonmal

Thomas 

PS: Ist dieser Ansatz eigentlich sinnvoll oder ist es unter Umständen einfacher das Ganze mit fopen etc anzugehen ?


----------



## Teambeta (3. April 2008)

Weizentrinker hat gesagt.:


> hm also im Optimalfall wollte ich das mit "Tokens" machen, wobei ich selber nicht mal genau weiss was das genau ist. Da das ganze für mein Studium abgegeben werden muss, soll ich das ganze per flex oder bison schreiben, wobei ich bislang einfach nicht verstehe wie das Grundprinzip dahinter aussieht. Es wäre also super wenn jemand nen einfaches tutorial zu dem Thema kennt oder vllt nen bissl beispielcode über hat.
> 
> Danke schonmal
> 
> ...



Wo liegt denn dein genaues Problem?

Lese, wie schon oben geschrieben, jede Zeile aus der Datei ( oder X Zeichen, oder .. )
und dann schmeiss den String durch nen 'Hexler' der deinen String je nach Zeichen aufteilt.

Wie genau das mit der Teilung geht, davon gibts ja genug Quellcode da draußen, oder du fragst hier auch nochmal nach nem Code.


----------



## Weizentrinker (3. April 2008)

Also ich habe als Beispiel vom Professor folgenden Quellcode bekommen:


```
%{ 

#include <stdio.h>

%}


letter		[A-Z]|[a-z]
email		{letter}+"@"{letter}+("."{letter}+)*

%%

{email} 	{ printf("%s is a valid email address.\n",yytext); }
.		{ printf("ERROR: %s is not part of a valid email address! \n",yytext); }

%%

int main(int argc,char** argv)
{
  FILE *source_file;

  if (argc>1)
    source_file = fopen(argv[1],"r");
  else
    return -1;

  yyin=source_file; 
  yylex();
  fclose(source_file);
  return 0;
}
```
Dies soll mit FleX arbeiten. Wenn ich diese Datei jedoch in Dev-C++ einfüge bekomme ich  immer einen Syntaxfehler wegen den %-Zeichen. Zu so einem Thema wäre ein Tutorial irgendwo super, da ich nicht verstehe wie ich so einen Quellcode vernünftig einbinde.

Grüße Thomas


----------



## Matthias Reitinger (3. April 2008)

Hallo,

Handbuch lesen soll helfen 

Grüße,
Matthias


----------

