<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Warum ist ein Itearotor kein Zeiger?]]></title><description><![CDATA[<p>Hi,</p>
<p>warum ist ein Iterator in einem std::string eigentlich kein</p>
<pre><code class="language-cpp">char*
</code></pre>
<p>sondern eine eigene Klasse?</p>
<p>Dann kann ich den -&gt; operator ja gar nicht benutzen und auch der * operator wäre sinnlos.<br />
Ich denke mal ich übersehe da irgendwas.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201588/warum-ist-ein-itearotor-kein-zeiger</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 05:02:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201588.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Jan 2008 18:45:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 18:45:15 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>warum ist ein Iterator in einem std::string eigentlich kein</p>
<pre><code class="language-cpp">char*
</code></pre>
<p>sondern eine eigene Klasse?</p>
<p>Dann kann ich den -&gt; operator ja gar nicht benutzen und auch der * operator wäre sinnlos.<br />
Ich denke mal ich übersehe da irgendwas.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1428930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428930</guid><dc:creator><![CDATA[Iterator__]]></dc:creator><pubDate>Tue, 01 Jan 2008 18:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 18:53:48 GMT]]></title><description><![CDATA[<p>Iterator__ schrieb:</p>
<blockquote>
<p>warum ist ein Iterator in einem std::string eigentlich kein</p>
<pre><code class="language-cpp">char*
</code></pre>
<p>sondern eine eigene Klasse?</p>
</blockquote>
<p>Vielleicht weil jemand mitgedacht hat und da es eine Templateklasse ist auch daran gedacht hat das nicht zwingend ein Zeichen immer gleich groß sein muss (Thema Unicode und verschiedene Codierungen...).</p>
<p>Iterator__ schrieb:</p>
<blockquote>
<p>Dann kann ich den -&gt; operator ja gar nicht benutzen und auch der * operator wäre sinnlos.<br />
Ich denke mal ich übersehe da irgendwas.</p>
</blockquote>
<p>z.B. Operatorüberladung?</p>
<p>cu Geron</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1428932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428932</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 01 Jan 2008 18:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 19:10:55 GMT]]></title><description><![CDATA[<p>Weil ein Iterator ein Zeiger sein _kann_, es aber nicht muss.</p>
<p>Ein Beispiel, wir wollen einen Stringiterator, der aber auch immer mit zählt, bei welchem Zeichen wir sind, und in welcher Zeile (Sprich wieviele '\n').<br />
Das geht nicht mit einem Zeiger, dafür brauchst du eine Klasse die die entsprechenden Operatoren überläd.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1428943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428943</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Tue, 01 Jan 2008 19:10:55 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 19:25:41 GMT]]></title><description><![CDATA[<p>Ich würde sagen: Weil man zur Zeiten von Zeigern noch keine &quot;Iteratoren&quot; (als Konzept) kannte und man deshalb &quot;Referenz&quot; und &quot;Iterator&quot; in einen Topf geschmissen und durch das naheliegenste technische Konstrukt abgebildet hat, das man fand. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1428948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428948</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 01 Jan 2008 19:25:41 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 19:54:47 GMT]]></title><description><![CDATA[<p>Achso, vielen Dank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Jetzt habe ich aber eine weitere Frage.<br />
Sind Iteratoren den Indicies vorzuziehen?<br />
Ich denke man kann das nicht so ganz allgemein sagen, aber<br />
sind sie mehr als nur eine Modeerscheinung?</p>
<p>Noch eine Frage. Ich möchte mithilfe von Iteratoren alle leerzeichen<br />
aus einem std::string löschen.</p>
<pre><code class="language-cpp">for( std::string::iterator it = string.beg(); it != string.end(); ++it )
{
    if( *it == ' ' )
    {
        string.erase( it ); 
        // da alle zeichen jetzt eins nach vorne rücken muss die position
        // nochmal geprüft werden
        --it; 
    }
}
</code></pre>
<p>jetzt habe ich das Problem, dass dies nicht klappt wenn der string nur aus<br />
einem Leerzeichen besteht.<br />
Ich denke es liegt daran, dass wenn der String leer ist string.end() nicht das<br />
ist wie it.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1428957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428957</guid><dc:creator><![CDATA[Iterator__]]></dc:creator><pubDate>Tue, 01 Jan 2008 19:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 20:38:45 GMT]]></title><description><![CDATA[<p>der iterator wird durch den schreibzugriff ungültig, das --it ist also in jedem fall falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1428970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428970</guid><dc:creator><![CDATA[c0d0r]]></dc:creator><pubDate>Tue, 01 Jan 2008 20:38:45 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 21:01:00 GMT]]></title><description><![CDATA[<p>mhhh,</p>
<p>und wie bekomme ich das hin?<br />
Irgendwie bin ich jetzt total verwirrt.<br />
Eigentlich müsste es doch ganz einfach gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1428977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428977</guid><dc:creator><![CDATA[Iterator__]]></dc:creator><pubDate>Tue, 01 Jan 2008 21:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 21:09:07 GMT]]></title><description><![CDATA[<p>Wenn ich mich recht erinnere liefert erase (und insert auch iirc) netterweise den nächsten gültigen Iterator zurück.</p>
<p>=&gt;</p>
<pre><code class="language-cpp">for( std::string::iterator it = string.beg(); it != string.end(); ++it )
    if( *it == ' ' )
        it = string.erase( it );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1428981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428981</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 01 Jan 2008 21:09:07 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 21:41:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">s.erase(remove(s.begin(),s.end(),' '),s.end());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1428992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428992</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 01 Jan 2008 21:41:21 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 22:29:57 GMT]]></title><description><![CDATA[<p>Vielen Dank, jetzt ist mir alles klar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /><br />
Sind doch ganz nützlich diese Dinger <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Kleine speziellere Frage zu strings noch.</p>
<pre><code class="language-cpp">std::string string( &quot;1234567&quot; );

std::string::reverse_iterator r_it = string.rbegin();
std::string::iterator it = string.begin();
string.erase( it, r_it );
</code></pre>
<p>Jetzt mosert der Compiler rum, dass er r_it nich in std::string::iterator<br />
vonvertieren kann. Wie kann ich das umgehen?<br />
Man muss noch irgendwie einen _reverseiterator in einen iterator konvertieren können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429001</guid><dc:creator><![CDATA[Iterator__]]></dc:creator><pubDate>Tue, 01 Jan 2008 22:29:57 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Tue, 01 Jan 2008 22:45:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">string.erase (it, r_it.base());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1429006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429006</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Tue, 01 Jan 2008 22:45:04 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Wed, 02 Jan 2008 19:58:32 GMT]]></title><description><![CDATA[<p>Warum sind die Iteratoren nicht durchgehend eingebaut?<br />
Ich kann bei einem std::string Iteratoren beim einfügen<br />
löschen usw benutzen. Wenn ich aber einen substr haben möchte<br />
werden wieder nur Indicies akzeptiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429566</guid><dc:creator><![CDATA[Iterator__]]></dc:creator><pubDate>Wed, 02 Jan 2008 19:58:32 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Wed, 02 Jan 2008 20:10:44 GMT]]></title><description><![CDATA[<p>Substring liefert (leider) eine Kopie des Bereiches. Und die bekommst du auch mit dem handelsüblichen std::string-Iteratorkonstruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429573</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 02 Jan 2008 20:10:44 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist ein Itearotor kein Zeiger? on Thu, 03 Jan 2008 09:03:45 GMT]]></title><description><![CDATA[<p>Iterator__ schrieb:</p>
<blockquote>
<p>Warum sind die Iteratoren nicht durchgehend eingebaut?<br />
Ich kann bei einem std::string Iteratoren beim einfügen<br />
löschen usw benutzen. Wenn ich aber einen substr haben möchte<br />
werden wieder nur Indicies akzeptiert.</p>
</blockquote>
<p>Weil std::string leider &quot;suboptimal&quot; designed ist (was sich nicht nur bei diesem Punkt zeigt)...<br />
Leider konnte sich das Standardkomitee nicht entscheiden, ob sie string als char-Container oder als &quot;Textklasse&quot; sehe möchte.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1429734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1429734</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 03 Jan 2008 09:03:45 GMT</pubDate></item></channel></rss>