<?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[Eigener Iterator nötig?]]></title><description><![CDATA[<p>Hallo,</p>
<p>erst einmal ein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;iterator&gt;

int main(int argc, char *argv[])
{
    std::vector&lt;MyType&gt; vec((std::istream_iterator&lt;MyType&gt;(std::cin)), std::istream_iterator&lt;MyType&gt;());
    std::copy(vec.begin(), vec.end(), std::ostream_iterator&lt;MyType&gt;(std::cout, &quot;\t&quot;);
    std::cin.clear();
    std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
    std::cin.get();
    return 0;
}
</code></pre>
<p>Für <code>typedef int MyType;</code> lässt sich klar sagen, dass das Konstruieren des <code>vector&lt;int&gt;</code> beginnt(*), sobald eine ungültige Eingabe getätigt wird, d.h. keine oder zu große Zahl.</p>
<p>Lese ich nun aber <code>char</code> s ein, lässt sich der Vorgang nur durch Strg+D/Strg+Z abbrechen. Gibt es eine Möglichkeit, dem Iterator ein <code>char</code> mitzugeben, bei dem die Eingabe als ungültig erklärt wird?</p>
<p>Falls nein, wie wäre eure Lösung?</p>
<p>Ich dachte eventuell an einen eigenen Iterator, der die Eingabe entgegen nimmt und gegen einen vorgegebenen Wert überprüft und ggf. das eof()-Flag setzt.</p>
<p>* So wie ich das verstehe, wird erst - bis good() false liefert - eingelesen und der Iterator dann dem Konstruktor übergeben, stimmt das soweit?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/290920/eigener-iterator-nötig</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 01:31:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290920.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Aug 2011 15:45:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigener Iterator nötig? on Sat, 06 Aug 2011 15:45:10 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>erst einmal ein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;iterator&gt;

int main(int argc, char *argv[])
{
    std::vector&lt;MyType&gt; vec((std::istream_iterator&lt;MyType&gt;(std::cin)), std::istream_iterator&lt;MyType&gt;());
    std::copy(vec.begin(), vec.end(), std::ostream_iterator&lt;MyType&gt;(std::cout, &quot;\t&quot;);
    std::cin.clear();
    std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
    std::cin.get();
    return 0;
}
</code></pre>
<p>Für <code>typedef int MyType;</code> lässt sich klar sagen, dass das Konstruieren des <code>vector&lt;int&gt;</code> beginnt(*), sobald eine ungültige Eingabe getätigt wird, d.h. keine oder zu große Zahl.</p>
<p>Lese ich nun aber <code>char</code> s ein, lässt sich der Vorgang nur durch Strg+D/Strg+Z abbrechen. Gibt es eine Möglichkeit, dem Iterator ein <code>char</code> mitzugeben, bei dem die Eingabe als ungültig erklärt wird?</p>
<p>Falls nein, wie wäre eure Lösung?</p>
<p>Ich dachte eventuell an einen eigenen Iterator, der die Eingabe entgegen nimmt und gegen einen vorgegebenen Wert überprüft und ggf. das eof()-Flag setzt.</p>
<p>* So wie ich das verstehe, wird erst - bis good() false liefert - eingelesen und der Iterator dann dem Konstruktor übergeben, stimmt das soweit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102687</guid><dc:creator><![CDATA[iterieror-neuling]]></dc:creator><pubDate>Sat, 06 Aug 2011 15:45:10 GMT</pubDate></item></channel></rss>