1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Zeichnenkette umdrehen in C++

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Knubbelmac, 27.06.07.

  1. Knubbelmac

    Knubbelmac Bismarckapfel

    Dabei seit:
    05.06.06
    Beiträge:
    141
    Hallo,

    ich bräuchte Hilfe bei einem C++ Programm. Es gibt 2 Funktionen:

    1. auswerten
    2. match

    Dabei wird in match ein regulärer Ausdruck realisiert, z. B. ^a*.5$. Die Zeichnenkette sollen während der Auswertung umgedreht werden, so daß bei einer Eingabe von

    abcd5

    der Vektor

    5dcba

    enthalten soll. Meine Schwierigkeit liegt dabei, daß ich die Zeichnenketten nicht umdrehen kann. Das sollte ja eigentlich über einen Zeiger möglich sein, der einfach von hinten nach vorne liest. Nur, wie realisier ich das? Das Problem liegt in der Funktion auswerten.

    Anbei noch ein Codefragment:

    Code:
    #include <string>
    #include <vector>
    #include <cstddef>
    #include <cctype>
    
    using namespace std;
    
    int auswerten(char const **argv, vector<string>& v)
    {
        if(!argv)  
        return -1;
    
        string temp("");
        for(;*argv;++argv)
         { 
           temp=match(*argv);
           for(size_t d(0);d<temp.length();++d)
              { 
                // Hier steh ich auf dem Schlauch
    
              }
           v.push_back(temp);  
          }
      return 0;
    }
    
    string match(char const *p)
    
    // Hier wird der reguläre Ausdruck realisiert
    // ...
    
    
     
  2. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Code:
    string temp = match(*argv);
    size_t e    = temp.length();
    char c;
    
    for(size_t d = 0; d < temp.length() / 2; ++d)
    {
        --e;
        c = temp[d];
        temp[d] = temp[e];
        temp[e] = c;
    }
    MacApple
     
  3. Knubbelmac

    Knubbelmac Bismarckapfel

    Dabei seit:
    05.06.06
    Beiträge:
    141
    MacApple, Du hast mir sehr geholfen! Vielen lieben Dank!!!
     
  4. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.251
    Ich würde das ja anders machen, und C++ programmieren statt C.
    Code:
    #include <string>
    #include <vector>
    #include <cstddef>
    #include <cctype>
    #include <stdexcept>
    
    using namespace std;
    
    void auswerten(char const **argv, vector<string>& v)
    {
        if(!argv) throw std::runtime_error("argv is null");
    
        for(;*argv;++argv) { 
            std::string temp (match(*argv));
            std::string reverse(temp.rbegin(), temp.rend());
            v.push_back(reverse);  
        }
    }
     
  5. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    Nennt mich skriptsprachenverwöhnt, aber ich hätte das Stringumdrehen so gemacht (weil ich das besser lesen kann):

    Code:
    string original = ...;
    string lanigiro = "";
    int i;
    for (i = original.size() - 1; i >= 0; i--) {
      lanigiro += original.at(i);
    }
    
     
  6. Chu

    Chu Martini

    Dabei seit:
    15.06.07
    Beiträge:
    659
    hab dazu mal eine delphi anwendung geschrieben und kann den QT nachher mal reinstellen.
    Mit C++ hab ich noch nicht die erfahrung..
     
  7. wastel

    wastel Grahams Jubiläumsapfel

    Dabei seit:
    14.02.07
    Beiträge:
    107
    geht denke ich noch einfacher mit einem rekursiven aufruf.
     
  8. Chu

    Chu Martini

    Dabei seit:
    15.06.07
    Beiträge:
    659
    so war mein delphi programm :)
     

Diese Seite empfehlen