string umdrehen



  • hallo !

    na ich suche vergebends eine funktion, die einen string umdreht, also eine var des typ char !

    hab schon mit strrev versucht, aber vergebens ! hab diese hier gechrieben, aber funzt nicht richtig !

    char rev(char* s)
    {
    int len = strlen(s)-1;
    char a[50];
    for(int i=0; i < len; i++)
    {
    a[i] = s[len-i];
    }
    return a;
    }

    danke im voraus !!



  • Dieses Thema wurde schon öfters behandelt, siehe z.B hier. 🙂

    Caipi



  • Vielleicht solltest du lieber gleich C++ Strings nehmen.

    void rev(char* s) 
    { 
      string str(s);
      int len = str.size(); 
      for (int i = 0; i<len; i++)
       s[len-i-1] = str[i];
    }
    

    Probier mal so, ist aber aus der kalten, also keine Garantie 😉
    Geht bestimmt einfacher ...



  • ja, hab gelesen, hab ja auch die for schleife und so wietre ... aber wi bind ich das in eine funktion ein ?? also waenn ich eine normale for schleife in main() benutze, dann ist das ja alles kein problem, aber wie tue ich das in einer funktion ??

    danke im voraus !



  • Was spricht denn gegen std::reverse? 😕



  • danke fuer die funktion... ABER ! die ausgabe ist nicht so richtig ! so gebe ich zum beispiel 321 ein und die ausgabe ist : 3123 also die erste 3 ist zuviel ! was tun ??

    danke im voraus ...



  • @nmamnn : was fuer eine header datei muss ich denn da einbinde, denn hab mit <string.h> versucht, aber klappt irgendwei nicht ..,.



  • --hilfe schrieb:

    @nmamnn : was fuer eine header datei muss ich denn da einbinde, denn hab mit <string.h> versucht, aber klappt irgendwei nicht ..,.

    Die Verunstaltung meines Nicks lasse ich nochmal durchgehen. 😉
    Mit <algorithm> sollte das gehen, siehe auch: http://www.sgi.com/tech/stl/reverse.html



  • sorry nman ... 😉

    aber ohne jetzt eine std::fct zu benutzen, wie tue ich das mit einer normalen for schleife ?? in einer funktion, so dass ich zum beispiel einen char eingebe und di funtkion mir auch einen char zurueckgibt, nur umgebreht ??

    danke im voraus



  • reverse_iterators magst Du wahrscheinlich auch nicht, hm?



  • in einer funktion, so dass ich zum beispiel einen char eingebe und di funtkion mir auch einen char zurueckgibt, nur umgebreht

    Du meinst, aus einem E eine 3 macht? 😉

    Meinen Quelltext hab ich übrigens korrigiert, sollte jetzt gehen.



  • #include <string> // ohne .h!
    #include <algorithm>
    #include <iostream>
    
    int main()
    {
    std::string str("Hallo");
    std::cout << str << std::endl;
    
    std::reverse(str.begin(), str.end());
    
    std::cout << str << std::endl; // gibt "ollaH" aus
    }
    


  • ihr seid echt super ! danke

    ABER : ich muss anchher noch die zeichenkette in einen integer umwandeln ! in dieser nkette sind nur zahlen, das heisstich muss nachher jede einzelne zahl in einen integer umwandeln ! und deshalb benoetige ich chars ! gibt es keine funktion, die das macht ?? also im type :

    char rev(char* s)
    {
    //...
    }

    int main()
    {
    rev(zahl); // hier ist dann ein char array !
    zahl -= '0';
    }



  • SeppSchrot schrieb:

    Meinen Quelltext hab ich übrigens korrigiert, sollte jetzt gehen.

    Nö, ab der Hälfte müsste es falsch laufen (bin auch kalt 😉 )

    --hilfe: Dafür brauchst du kein char, dafür reicht stringstream aus <sstream> oder (wenns nur nach einzelnen Ziffern gehen soll, k.A. ob ich dich richtig verstanden hab) mit std::string::operator[] (z.B. ist foo[i] der i.te Buchstabe in foo).



  • --hilfe schrieb:

    ihr seid echt super ! danke

    ABER : ich muss anchher noch die zeichenkette in einen integer umwandeln ! in dieser nkette sind nur zahlen, das heisstich muss nachher jede einzelne zahl in einen integer umwandeln ! und deshalb benoetige ich chars !

    Das heißt nicht, dass du unbedingt chars benötigst. Du kannst ruhigen Gewissens die Klasse String nehmen und danach diesen String in einen Integer umwandeln.
    Siehe C++-Faq: Einmal Zahl nach String und zurück

    Caipi


Anmelden zum Antworten