<?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[eof() liefert nicht das Ende der Datei]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann mir jemand sagen, warum der folgende Code nicht funktioniert. Er soll bei erreichtem Dateiende &quot;true&quot; zurück liefern, tut dies aber nicht. Von der Logik her sieht der Code wie folgt aus:</p>
<pre><code class="language-cpp">ifstream file(fDatei);
while (file.eof() == false){
    getline(file,buffer);
    file.clear();
    file.seekg (0, ios::end);
    cout &lt;&lt; file.eof();
}
</code></pre>
<p>Ich hätte jetzt erwartet, dass nur die erste Zeile ausgelesen wird, dann wird der Zeiger auf das Dateiende gesetzt und durch die Überprüfung der while-Schliefe beendet das Programm. Allerdings ist dies nicht der Fall. Die while-Schleife wird wieder durchlaufen.</p>
<p>Gruß<br />
rodgerwilco</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238160/eof-liefert-nicht-das-ende-der-datei</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 03:53:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238160.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 07 Apr 2009 11:05:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to eof() liefert nicht das Ende der Datei on Tue, 07 Apr 2009 11:05:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann mir jemand sagen, warum der folgende Code nicht funktioniert. Er soll bei erreichtem Dateiende &quot;true&quot; zurück liefern, tut dies aber nicht. Von der Logik her sieht der Code wie folgt aus:</p>
<pre><code class="language-cpp">ifstream file(fDatei);
while (file.eof() == false){
    getline(file,buffer);
    file.clear();
    file.seekg (0, ios::end);
    cout &lt;&lt; file.eof();
}
</code></pre>
<p>Ich hätte jetzt erwartet, dass nur die erste Zeile ausgelesen wird, dann wird der Zeiger auf das Dateiende gesetzt und durch die Überprüfung der while-Schliefe beendet das Programm. Allerdings ist dies nicht der Fall. Die while-Schleife wird wieder durchlaufen.</p>
<p>Gruß<br />
rodgerwilco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692230</guid><dc:creator><![CDATA[rodgerwilco]]></dc:creator><pubDate>Tue, 07 Apr 2009 11:05:33 GMT</pubDate></item><item><title><![CDATA[Reply to eof() liefert nicht das Ende der Datei on Tue, 07 Apr 2009 11:12:10 GMT]]></title><description><![CDATA[<p>Unabhängig von deinem <a href="http://Problem.Es" rel="nofollow">Problem.Es</a> empfiehlt sich bei Dateioperationen nicht auf eof zu prüfen,sondern es auf so eine Art zu machen</p>
<p>Ganze Zeile einlesen</p>
<pre><code class="language-cpp">while(getline(ifstream,string))
{
    //tu etwas damit
}
</code></pre>
<p>Wort für Wort einlesen</p>
<pre><code class="language-cpp">while(ifstream&gt;&gt;string)
{
    //tu etwas damit
}
</code></pre>
<p>Somit gehst du 100% sicher, das du beim erreichen des Ende der Datei nicht 2mal einliest. Irgendjemand hatte da mal einen tollen Link gepostet mir fällt nur gerade nicht mehr ein wer das war.<br />
Weiterhin will ich sagen, das Operationen, also das hin und herspringen mit dem Dateizeiger,nicht gerade das Gelbe vom Ei sind.Wenn du irgendwas mit der Datei machen willst, lies sie komplett ein, bearbeite das eingelesene und schreibe sie komplett zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692234</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Tue, 07 Apr 2009 11:12:10 GMT</pubDate></item><item><title><![CDATA[Reply to eof() liefert nicht das Ende der Datei on Tue, 07 Apr 2009 11:13:18 GMT]]></title><description><![CDATA[<p>Die Funktion <code>eof</code> ist grundsätzlich immer etwas zu spät. Das <code>eofbit</code> wird erst gesetzt, wenn über das Dateiende gelesen wurde.</p>
<p>Um trotzdem sowas abzufangen, gibt es in C++ die Möglichkeit, den Stream direkt auf Gültigkeit zu prüfen. Dadurch ist dir das folgende möglich:</p>
<pre><code class="language-cpp">std::string line;
std::ifstream file(&quot;./bliblablub.txt&quot;);

while(std::getline(file, line))
{
  // ...
}
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692237</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 07 Apr 2009 11:13:18 GMT</pubDate></item><item><title><![CDATA[Reply to eof() liefert nicht das Ende der Datei on Tue, 07 Apr 2009 13:34:42 GMT]]></title><description><![CDATA[<blockquote>
<p>Irgendjemand hatte da mal einen tollen Link gepostet mir fällt nur gerade nicht mehr ein wer das war.</p>
</blockquote>
<p><a href="http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=eof#Answ" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=eof#Answ</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692338</guid><dc:creator><![CDATA[-----------]]></dc:creator><pubDate>Tue, 07 Apr 2009 13:34:42 GMT</pubDate></item></channel></rss>