<?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[Wiedermal: Probleme beim Lesen einer Datei]]></title><description><![CDATA[<p>Hallo.<br />
Ich versteh nicht ganz warum, das letzte Zeichen zweimal gelesen wird, ich komm gerade nicht drauf.</p>
<pre><code class="language-cpp">std::string testname(&quot;&quot;);
while (!inp.eof())	// inp ist ein Objekt von std::ifstream
{
	inp.read(&amp;c, sizeof(char));	// c ist ein char
	if (c == 'F' &amp;&amp; !inp.eof())
	{
		inp.read(&amp;c, sizeof(char));
		if (c == 'R' &amp;&amp; !inp.eof())
		{
			inp.read(&amp;c, sizeof(char));
			if (c == 'T') break;
		}
	}
	testname.push_back(c);
}
</code></pre>
<p>bei vorkommen von &quot;FRT&quot; in der Datei wird das lesen abgebrochen... Das letzte Zeichen der Datei wird komischerweise zweimal eingelesen, der Rest funktioniert. Ich verstehe nicht ganz warum...</p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236461/wiedermal-probleme-beim-lesen-einer-datei</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 22:14:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236461.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Mar 2009 16:55:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wiedermal: Probleme beim Lesen einer Datei on Sun, 15 Mar 2009 16:57:38 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich versteh nicht ganz warum, das letzte Zeichen zweimal gelesen wird, ich komm gerade nicht drauf.</p>
<pre><code class="language-cpp">std::string testname(&quot;&quot;);
while (!inp.eof())	// inp ist ein Objekt von std::ifstream
{
	inp.read(&amp;c, sizeof(char));	// c ist ein char
	if (c == 'F' &amp;&amp; !inp.eof())
	{
		inp.read(&amp;c, sizeof(char));
		if (c == 'R' &amp;&amp; !inp.eof())
		{
			inp.read(&amp;c, sizeof(char));
			if (c == 'T') break;
		}
	}
	testname.push_back(c);
}
</code></pre>
<p>bei vorkommen von &quot;FRT&quot; in der Datei wird das lesen abgebrochen... Das letzte Zeichen der Datei wird komischerweise zweimal eingelesen, der Rest funktioniert. Ich verstehe nicht ganz warum...</p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1680468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680468</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Sun, 15 Mar 2009 16:57:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wiedermal: Probleme beim Lesen einer Datei on Sun, 15 Mar 2009 17:42:05 GMT]]></title><description><![CDATA[<p>Zweimal gelesen werden wird es wohl nicht, aber das alte Zeichen könnte noch in c drinn sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1680484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680484</guid><dc:creator><![CDATA[__Stefan__]]></dc:creator><pubDate>Sun, 15 Mar 2009 17:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wiedermal: Probleme beim Lesen einer Datei on Sun, 15 Mar 2009 20:23:44 GMT]]></title><description><![CDATA[<p>Also ich empfehle beim Lesen von Dateien eher nicht auf eof zu prüfen. Sondern die schleife eher so zugestalten</p>
<pre><code class="language-cpp">//wenn man ne zeile lesen will
while(getline(irgendeinfstream,irgendeinstring))
{
       //tue was
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1680551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680551</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 15 Mar 2009 20:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wiedermal: Probleme beim Lesen einer Datei on Sun, 15 Mar 2009 20:36:58 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Also ich empfehle beim Lesen von Dateien eher nicht auf eof zu prüfen. Sondern die schleife eher so zugestalten</p>
<pre><code class="language-cpp">//wenn man ne zeile lesen will
while(getline(irgendeinfstream,irgendeinstring))
{
       //tue was
}
</code></pre>
</blockquote>
<p>Genau damit hat es auch geklappt, thx...<br />
Frage: Gilt das fuer alle Leseoperationen? (bei <code>read</code> geht es zumindest)<br />
z.B.<br />
<code>get()</code><br />
<code>operator&gt;&gt;</code><br />
etc.</p>
<p>Und noch eine Frage speziell fuer <code>read</code> . Wenn ich ein char-Array mit einer bestimmten Menge an Bytes lesen will, es aber nicht mehr genuegend Bytes zu lesen gibt - wird dann die restliche Menge in das char-Array kopiert - oder gibt es dann ein <code>false</code> ? Und wo befindet sich dann der Dateizeiger?<br />
Fragen ueber Fragen...</p>
<p>Gruss<br />
Cartman</p>
<p>P.S.: Das ist das erste mal, dass es mit <code>eof()</code> nicht geklappt hat - denn bisher hatte ich noch nie Probleme damit...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1680554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680554</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Sun, 15 Mar 2009 20:36:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wiedermal: Probleme beim Lesen einer Datei on Sun, 15 Mar 2009 20:38:35 GMT]]></title><description><![CDATA[<p>Naja die Grundfrage ist doch, musst du Binär einlesen oder geht es auch über das &quot;normale&quot; einlesen eines strings, wie ist denn deine Datei aufgebaut?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1680555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680555</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 15 Mar 2009 20:38:35 GMT</pubDate></item><item><title><![CDATA[Reply to Wiedermal: Probleme beim Lesen einer Datei on Sun, 15 Mar 2009 21:02:54 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Naja die Grundfrage ist doch, musst du Binär einlesen oder geht es auch über das &quot;normale&quot; einlesen eines strings, wie ist denn deine Datei aufgebaut?</p>
</blockquote>
<p>Warum? Es geht um binaeres Einlesen... eigentlich habe ich grad ein weiteres Problem; das koennt ich hier gleich mal fragen.</p>
<p>ich arbeite zurzeit an einem Datenkomprimierungsprogramm (Dateien lesen und komprimiert wieder in eine neue Datei schreiben). Dazu habe ich meinen eigenen Komprimierungsalgorithmus geschrieben, der auch wunderbar funktioniert.<br />
Das ganze ist in eine Klasse gekapselt<br />
Und zwar ist die Klasse so aufgebaut, dass man die Daten in Form eines [/c]std::string[/c] in eine Membervariable speichern muss, mit der dann die Klasse arbeitet (die Daten komprimiert).<br />
Nun ist es aber so, dass ich eine Datei nicht komplett einlesen will, sondern das ganze Haeppchenweise einlesen will; und haeppchenweise wieder schreiben will. Das Problem dabei ist nur, dass ich nicht weiss, wie ich vorgehen soll, da die Daten ja komprimiert werden und ich beim wieder einlesen nicht mehr weiss, umwieviel komprimiert wurde... ich hoffe es ist einigermassen verstaendlich, was ich meine.<br />
Wenn ich die Datei komplett in einen std::string lese funktioniert natuerlich alles. Aber gerade das will ich ja vermeiden, weil es bei groesseren Dateien problematisch sein kann.</p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1680565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680565</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Sun, 15 Mar 2009 21:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to Wiedermal: Probleme beim Lesen einer Datei on Mon, 16 Mar 2009 09:14:05 GMT]]></title><description><![CDATA[<p>Eric Cartman schrieb:</p>
<blockquote>
<p>[...]Frage: Gilt das fuer alle Leseoperationen? (bei <code>read</code> geht es zumindest)<br />
z.B.<br />
<code>get()</code><br />
<code>operator&gt;&gt;</code><br />
etc.[...]</p>
</blockquote>
<p><a href="http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.5" rel="nofollow">Hier</a> steht, wieso man <code>eof</code> vermeiden sollte, es sei denn, man weiss, was man tut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1680693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680693</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 16 Mar 2009 09:14:05 GMT</pubDate></item></channel></rss>