Forum
Tipps
News
Menu-Icon

C++ : String Aufgabe

Hallo. Ich habe folgenden Quellcode :
-----------------------------------------------------------
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string y = "Umgekehrter Lauf von Buchstaben";
    string::reverse_iterator u;
    for (i=u.rbegin(); u!=y.rend(); u++)
    {
        cout << *u ;
    }
    cout << endl;
}

---------------------------------------------------------

Nu zu meiner Frage : Wieso muss zum Schluss bei cout ein Zeiger vorhanden sein. Ich habe mal testweise nur "u" ausprobiert,allerdings kommt dann der String nur mit "u" Buchstaben. Ich würde gerne nachvollziehen können,warum es unbedingt ein Zeiger sein muss. Schliesslich würde eine normale Variable ebenfalls den jeweilgen Speicherberech von den Stellen des Strings zugeteilt bekommen und müsste ebenfalls die String Buchstaben ausgeben können.Danke für die Hilfe.

« Letzte Änderung: 18.07.06, 11:07:15 von Rumak18 »

Antworten zu C++ : String Aufgabe:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

In deinem Skript ist u ein Iterator, um genau zu sein ein reverse_iterator. Iteratoren sind dazu da, um auf Elemente einer anderen Klasse zuzugreifen, quasi zu "zeigen". Darum benutzt man sie wie Zeiger.

Ein String ist ja auch nichts anderes als ein komplexer Datentyp, der aus einer Reihe von Chars besteht. Der Iterator zeigt jetzt auf einzelne Elemente des Strings, also einzelne Zeichen.

Kannst auch nochmal hier nachlesen:
http://www.cppreference.com/iterators.html

HTH :)

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Um den Sinn von Iteratoren ging es mir ja nicht. Das ist mir schon alles klar. Nur verstehe ich eben IN DIESEM FALL,den Sinn des Zeigers nicht.Warum reicht hier eine Variable nicht einfach aus?Zumal der Zeiger auch davor ja nirgends definiert worden ist.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Du wirst nicht nur IN DIESEM FALL darauf stoßen, dass der Iterator wie ein Pointer verwendet wird, sondern immer.

Das liegt einfach daran, dass die Pointer-Arithmetik auch bei Iteratoren zum Tragen kommt. Betonung liegt auf Pointer-Arithmetik. Das heißt nicht, dass es sich bei einem Iterator auch tatsächlich um einen Pointer handelt. Das kann so sein, muss aber nicht.
Meines Wissens sind z.B. bei Visual C++ die Iteratoren tatsächlich Pointer, woanders dagegen Strukturen.

Ist auch für den Programmierer vollkommen Wurscht, denn das ändert nichts daran, dass du Iteratoren wie Pointer ansprichst. Das kannst du als gegeben hinnehmen wie das Dollarzeichen vor einer PHP-Variablen ;)

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Zitat
Das kannst du als gegeben hinnehmen wie das Dollarzeichen vor einer PHP-Variablen Wink
Solche Aussagen liebe ich.  Klar und ohne Ausweg  ;)
Ok.Damit kann ich leben. Danke

« Über Editor programmierenUebergabe von Parametern (Variablen) von der CMD an eine .bat »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Laufweite
Der Zwischenraum zwischen den Buchstaben, auch Zurichtung genannt. Sie ist vom Schriftenhersteller festgelegt, lässt sich aber heute mit Grafikprogrammen manipuliere...

Laufwerk
Generell gibt es verschiedene Arten von Laufwerken. Ein Laufwerk in der Computersprache ist ein Lese- und Schreibmedium. Bei den Computerbezogenden Laufwerken unterscheid...