eregi() in C++?

DaRula

Erfahrenes Mitglied
moin,

ich bin ein totaler anfänger in c++. Ich will einen string wie mit der Funktion eregi() in PHP untersuchen. In PHP sähe es etwa so aus:

PHP:
if(eregi("\<FONT COLOR=#(.{6})\>\(([a-zA-Z0-9]*)\) mmh", $string, $gefiltert)){
  echo "mmh nich so!";
  echo $gefiltert[0];
  echo $gefiltert[1];
}

aber wie lasse ich das ganze in c++ aussehen?

Tobias
 
Zuletzt bearbeitet:
also ich bin in der msdn auf etwas gestoßen, aber es wirkt nen bissle kompliziert. ich kann damit nich so viel anfangen. gibts dafür wirklich keine einfache funktion wie eregi() in PHP?
 
nope, was daran liegt das strings in PHP vom interpreter aber in C/C++ vom programmierer verwaltet werden müssen...

Ein C string wird nicht länger blos weil dir die länge nicht passt....
 
das problem ist halt, dass ich verschiedene html-zeilen verarbeiten muss. was mich interessiert ist allerdings nur, was rechts steht, der eigentliche inhalt. der besteht wieder aus zwei teilen: dem namen und dem text. Aus der msdn werd ich nich schlau. kann mir das jemnand erklären?
 
Ok also das machste am einfachsten mit sscanf, die ergebnissdaten läste in /dev/null verschwinden, und die rückgabe ist die anzahl der verarbeiteten teile, welche wenn es nicht passt natürlich kleiner als die gesamtzahl ist.

Aber wie gesagt C is prinziell nicht dafür ausgerüstet, auch wenn man bei genauerem hinsehen durchaus die eine oder andere bibliothek für reguläre expressions findet, z.B. kann man mal in den PHP source rein gucken ;-)
 
mmh..das mit sscanf is wirklich ne gute idee, allerdings habe ich problemen bei strings:

Code:
#include <stdio.h>
int main()
{
  char *buffer = "<font color=\"1234\">Hi";
  float Ax, Ay;

  printf ("buffer:%s\n", buffer);
  sscanf(buffer, "<font color=\"%f\">%f", &Ax, &Ay);
  printf ("%f\n%f\n", Ax, Ay);
  
  return 0;

}

ergebnis:
1234
-1037....

wie kannsch das in nen string ändern?
 
Also "Hi" ist eindeutig keine zahl... ;-)

von daher empfehle ich dir den formatspezifizierer %s ,... s für string. übergeben wird ein char* in welches dann der string geschrieben wird, oder wenn du die genaue länge kennst ein %c
 
funktioniert soweit, allerdings nur, wenn vor bzw nach dem zu parsenden string/int ein leerzeichen steht.

wie geht es aber, wenn mann zum beispiel sowas auslesen will:

<font color="#cccccc">bla

das geht irgendwie nicht:
<font color=\"%s\">%s
 
[a-zA-Z0-9] <--- die klammer methode ;-)

so meinst du? in den klammern gibst du genau an welche zeichen es sein dürfen, sobald das erste nicht konforme zeichen auftaucht bricht er ab. Wie es genau funktioniert musste nachgucken, hab ich net ganz im kopf.
 
Zurück