<?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[Fehler beim Lesen von Datei]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Ich möchte gern folgende Datei in mein Programm einlesen:</p>
<p>A a A<br />
A a B<br />
A b A<br />
...<br />
F a B<br />
F b A<br />
F c A</p>
<pre><code>ifstream fin(filename);

while( !fin.eof() ) {
	fin &gt;&gt; n.start;
	fin &gt;&gt; n.x;
	fin &gt;&gt; n.ziel;
	nodes.push_back(n);
}

for(vector&lt;NeaNode&gt;::iterator it = nodes.begin(); it != nodes.end(); it++)
        cout &lt;&lt; it-&gt;start &lt;&lt; &quot; &quot; &lt;&lt; it-&gt;x &lt;&lt; &quot; &quot; &lt;&lt; it-&gt;ziel &lt;&lt; endl;
</code></pre>
<p>Dabei wird der letze Eintrag 'F c A' 2-mal ausgegeben, statt nur 1-mal.</p>
<p>Wenn ich mit</p>
<pre><code>while( fin &gt;&gt; n.start &gt;&gt; n.x &gt;&gt; n.ziel )
	nodes.push_back(n);
</code></pre>
<p>einlese, funktioniert alles richtig, und der letzte Eintrag wird nur 1-mal ausgegeben.</p>
<p>Kann mir jemand sagen, wo der Fehler liegt?</p>
<p>Gruß heine789</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/167232/fehler-beim-lesen-von-datei</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 20:57:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/167232.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Dec 2006 07:59:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler beim Lesen von Datei on Fri, 08 Dec 2006 07:59:52 GMT]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Ich möchte gern folgende Datei in mein Programm einlesen:</p>
<p>A a A<br />
A a B<br />
A b A<br />
...<br />
F a B<br />
F b A<br />
F c A</p>
<pre><code>ifstream fin(filename);

while( !fin.eof() ) {
	fin &gt;&gt; n.start;
	fin &gt;&gt; n.x;
	fin &gt;&gt; n.ziel;
	nodes.push_back(n);
}

for(vector&lt;NeaNode&gt;::iterator it = nodes.begin(); it != nodes.end(); it++)
        cout &lt;&lt; it-&gt;start &lt;&lt; &quot; &quot; &lt;&lt; it-&gt;x &lt;&lt; &quot; &quot; &lt;&lt; it-&gt;ziel &lt;&lt; endl;
</code></pre>
<p>Dabei wird der letze Eintrag 'F c A' 2-mal ausgegeben, statt nur 1-mal.</p>
<p>Wenn ich mit</p>
<pre><code>while( fin &gt;&gt; n.start &gt;&gt; n.x &gt;&gt; n.ziel )
	nodes.push_back(n);
</code></pre>
<p>einlese, funktioniert alles richtig, und der letzte Eintrag wird nur 1-mal ausgegeben.</p>
<p>Kann mir jemand sagen, wo der Fehler liegt?</p>
<p>Gruß heine789</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188746</guid><dc:creator><![CDATA[heine789]]></dc:creator><pubDate>Fri, 08 Dec 2006 07:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Lesen von Datei on Fri, 08 Dec 2006 08:06:21 GMT]]></title><description><![CDATA[<p>eof() wird erst dann auf true gesetzt, wenn eine Lese-Operation auf's Dateiende gestoßen ist. In deiner Schleife bedeutet das für den letzten Durchlauf:</p>
<ul>
<li>fin.eof() ist (noch) false</li>
<li><code>fin&gt;&gt;n.start;</code> wird ausgeführt und setzt eofbit und failbit</li>
<li>alle weiteren Lese-Oprationen machen nichts mehr</li>
<li>push_back() bekommt demzufolge das unveränderte Objekt n</li>
</ul>
<p>Die zweite Variante funktioniert, weil istream::operator&gt;&gt; den Stream zurückgibt - und über die Umwandlung nach void* und bool fragst du ab, ob er noch intakt ist, bevor du push_back() aufrufst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188748</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 08 Dec 2006 08:06:21 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Lesen von Datei on Fri, 08 Dec 2006 08:06:48 GMT]]></title><description><![CDATA[<p>Der letzte Wert wird gelesen, damit ist eof aber nicht erreicht.<br />
Erst beim nächsten Lesezugriff (also über das letzte Element hinaus) wird eof gesetzt.</p>
<p>Dadurch das fin dann ungültig ist, werden die anderen Operationen ignoriert , die Werte von n nicht geändert und somit doppelt hinzugefügt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188749</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Fri, 08 Dec 2006 08:06:48 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Lesen von Datei on Fri, 08 Dec 2006 08:07:15 GMT]]></title><description><![CDATA[<p>wie schauts mit einer do-while schleife aus statt einer while ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188751</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Fri, 08 Dec 2006 08:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Lesen von Datei on Fri, 08 Dec 2006 08:18:59 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>wie schauts mit einer do-while schleife aus statt einer while ?</p>
</blockquote>
<p>Dürfte den selben Effekt haben wie die normale while-Schleife. Du mußt schon aus der Mitte der Schleife rausspringen, um an der richtigen Stelle abzubrechen:</p>
<pre><code class="language-cpp">while(fin)//fängt zusätzlich zum EOF auch Eingabefehler ab
{
  fin &gt;&gt; n.start;
  fin &gt;&gt; n.x;
  fin &gt;&gt; n.ziel;
  if(!fin) break;
  nodes.push_back(n);
}

//oder

fin.exceptions(ios::failbit);
try
{
  while(fin)
  {
    fin &gt;&gt; n.start;
    fin &gt;&gt; n.x;
    fin &gt;&gt; n.ziel;
    nodes.push_back(n);
  }
}
catch(ios::failure&amp;e) {}

//oder die Alternativlösung von heine ;)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1188762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188762</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 08 Dec 2006 08:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Lesen von Datei on Fri, 08 Dec 2006 08:36:07 GMT]]></title><description><![CDATA[<p>Danke für eure Antworten!</p>
<p>Dann werd ich bei der zweiten Variante bleiben.</p>
<p>Gruß heine789</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188774</guid><dc:creator><![CDATA[heine789]]></dc:creator><pubDate>Fri, 08 Dec 2006 08:36:07 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Lesen von Datei on Fri, 08 Dec 2006 08:45:28 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">...
fin.exceptions(ios::failbit);
...
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Danke,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188781</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 08 Dec 2006 08:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Lesen von Datei on Fri, 08 Dec 2006 08:50:37 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>Was guckst du so erstaunt? Noch nie die Exception-Behandlung der IO-Streams in Natura gesehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188785</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 08 Dec 2006 08:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Lesen von Datei on Fri, 08 Dec 2006 09:19:33 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>Was guckst du so erstaunt? Noch nie die Exception-Behandlung der IO-Streams in Natura gesehen?</p>
</blockquote>
<p>Genau !</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1188811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1188811</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 08 Dec 2006 09:19:33 GMT</pubDate></item></channel></rss>