tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
637
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DaRula DaRula ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Beiträge
    191
    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-Code:
    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
    Geändert von DaRula (11.01.04 um 14:58 Uhr)
     

  2. #2
    DaRula DaRula ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Beiträge
    191
    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?
     

  3. #3
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    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....
     

  4. #4
    DaRula DaRula ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Beiträge
    191
    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?
     

  5. #5
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    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
     

  6. #6
    DaRula DaRula ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Beiträge
    191
    mmh..das mit sscanf is wirklich ne gute idee, allerdings habe ich problemen bei strings:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    #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?
     

  7. #7
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    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
     

  8. #8
    DaRula DaRula ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Beiträge
    191
    ah, ok, thx
     

  9. #9
    DaRula DaRula ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Beiträge
    191
    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
     

  10. #10
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    [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.
     

  11. #11
    DaRula DaRula ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Beiträge
    191
    jo, genau das...ich such mal weiter ind er msdn

    //edit: also %[a-z]s geht, aber wie verknüpfe ich die bedingungen? Laos nicht nur a-z, sondern auch A-Z, 0-9 und bestimmte sonderzeichen?
    Geändert von DaRula (26.01.04 um 22:09 Uhr)
     

  12. #12
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    Ich glaub einfach hintereinander schreiben also so
    [a-zA-Z0-9!"§$&]
     

  13. #13
    DaRula DaRula ist offline Mitglied Gold
    Registriert seit
    Apr 2002
    Beiträge
    191
    ne, das geht nicht.

    [a-z] oder [A-Z] alleine geht, aber eben nicht gleichzeitig
     

Ähnliche Themen

  1. eregi - Fehler?
    Von Malaxo im Forum PHP
    Antworten: 5
    Letzter Beitrag: 02.03.08, 17:07
  2. eregi() Problem
    Von FingerSkill im Forum PHP
    Antworten: 2
    Letzter Beitrag: 06.01.07, 18:51
  3. Frage zu eregi()
    Von Pre7ender im Forum PHP
    Antworten: 7
    Letzter Beitrag: 24.11.06, 20:13
  4. Problem mit eregi!
    Von Cemil im Forum PHP
    Antworten: 5
    Letzter Beitrag: 26.08.04, 23:15
  5. eregi !
    Von DarkSummer im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.05.02, 12:12