<?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[Status der Dateioperation abfragen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe jetzt nochmal eine Frage wie man richtig (sauberes C++) den Status einer erfolgten Dateioperation abfragt?</p>
<p>Ist dieses hier korrekt oder gibt es eine bessere Möglichkeit:</p>
<pre><code class="language-cpp">if (!file.write(pBuf, 10))
{
    std::cout &lt;&lt; &quot;Fehler beim Schreiben.&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/166568/status-der-dateioperation-abfragen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 11:03:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/166568.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Nov 2006 14:36:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Status der Dateioperation abfragen on Thu, 30 Nov 2006 14:36:23 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe jetzt nochmal eine Frage wie man richtig (sauberes C++) den Status einer erfolgten Dateioperation abfragt?</p>
<p>Ist dieses hier korrekt oder gibt es eine bessere Möglichkeit:</p>
<pre><code class="language-cpp">if (!file.write(pBuf, 10))
{
    std::cout &lt;&lt; &quot;Fehler beim Schreiben.&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1184610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1184610</guid><dc:creator><![CDATA[HaJo.]]></dc:creator><pubDate>Thu, 30 Nov 2006 14:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Status der Dateioperation abfragen on Thu, 30 Nov 2006 15:05:42 GMT]]></title><description><![CDATA[<p>Der Rückgabewert von <a href="http://www.cppreference.com/cppio/write.html" rel="nofollow">write</a> ist eine Referenz auf ostream ist. Ich weiß nicht, ob ein kaputter ostream &quot;false&quot; ist.<br />
Ansonsten siehe:<br />
<a href="http://www.cppreference.com/cppio/tellp.html" rel="nofollow">tellp</a><br />
<a href="http://www.cppreference.com/cppio/bad.html" rel="nofollow">bad</a><br />
<a href="http://www.cppreference.com/cppio/fail.html" rel="nofollow">fail</a><br />
<a href="http://www.cppreference.com/cppio/good.html" rel="nofollow">good</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1184656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1184656</guid><dc:creator><![CDATA[schorsch code]]></dc:creator><pubDate>Thu, 30 Nov 2006 15:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to Status der Dateioperation abfragen on Fri, 01 Dec 2006 07:24:43 GMT]]></title><description><![CDATA[<p>schorsch code schrieb:</p>
<blockquote>
<p>Ich weiß nicht, ob ein kaputter ostream &quot;false&quot; ist.</p>
</blockquote>
<p>Ja, ist er - die Stream-Klassen bieten eine Typumwandlung nach void* (liefert NULL=false, wenn fail() gesetzt ist) und einen operator! (liefert true, wenn fail() gesetzt ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185040</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 01 Dec 2006 07:24:43 GMT</pubDate></item><item><title><![CDATA[Reply to Status der Dateioperation abfragen on Fri, 01 Dec 2006 07:46:11 GMT]]></title><description><![CDATA[<p>es gibt für die fstreams auch noch die methode is_open.<br />
Wenn Du versuchst einen bereits geöffneten fstream erneut zu öffnen,<br />
wird das fail() dir melden, dass ein Fehler aufgetreten ist, obwohl Du eigentlich noch mit dem Stream arbeiten kannst.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">ofstream Datei(&quot;Test.txt&quot;); // Öffnet und initialisiert den Stream
Datei.open(&quot;AndereDatei.txt&quot;); // Versucht erneut zu öffnen, failbit wird gesetzt

if(Datei.fail())
{
   // Hier wird der Fehler erkannt
}

Datei &lt;&lt; &quot;Hallo Welt&quot;; // Wird in die &quot;Test.txt&quot; geschrieben, obwohl das failstate gesetzt war.
</code></pre>
<p>Besser wäre gewesen :</p>
<pre><code class="language-cpp">ofstream Datei(&quot;Test.txt&quot;); // Öffnet und initialisiert den Stream

if(Datei.is_open())
{
    Datei.close(); // Schliesst den Stream
}
Datei.open(&quot;AndereDatei.txt&quot;); // Versucht erneut zu öffnen, failbit wird nicht gesetzt
</code></pre>
<p>Gruß Paddy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185055</guid><dc:creator><![CDATA[paddy@work]]></dc:creator><pubDate>Fri, 01 Dec 2006 07:46:11 GMT</pubDate></item><item><title><![CDATA[Reply to Status der Dateioperation abfragen on Fri, 01 Dec 2006 08:02:47 GMT]]></title><description><![CDATA[<p>paddy@work schrieb:</p>
<blockquote>
<p>es gibt für die fstreams auch noch die methode is_open.<br />
Wenn Du versuchst einen bereits geöffneten fstream erneut zu öffnen,<br />
wird das fail() dir melden, dass ein Fehler aufgetreten ist, obwohl Du eigentlich noch mit dem Stream arbeiten kannst.</p>
</blockquote>
<p>Erstens: Afaik schließt open() die bisher geöffnete Datei, wenn vorhanden.<br />
Zweitens: Solange irgendeins der Fehlerflags gesetzt ist, wird der Stream <strong>sämtliche</strong> Schreib- und Leseanfragen ignorieren - das mußt du schon selber mit <code>clear()</code> zurücksetzen, bevor du weitermachen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185062</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 01 Dec 2006 08:02:47 GMT</pubDate></item><item><title><![CDATA[Reply to Status der Dateioperation abfragen on Fri, 01 Dec 2006 08:14:49 GMT]]></title><description><![CDATA[<p>Ich würde einfach die Exceptions einschalten, und schon bräuchte ich nichts mehr groß abfragen. Die Statusflags sind doch noch Steinzeit-Konstrukte und noch aus reinen Kompatibilitätsgründen zu altem Sourcecode vorhanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185072</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 01 Dec 2006 08:14:49 GMT</pubDate></item><item><title><![CDATA[Reply to Status der Dateioperation abfragen on Fri, 01 Dec 2006 09:02:00 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>:</p>
<p>Du hast recht, dass man das Failbit zurücksetzen muss, aber open schliesst die bereits geöffnete Datei nicht.</p>
<p>Das Failbit sagt aus, dass die letzte Operation fehlgeschlagen ist. Man kann den Fehler aber behandeln/ beheben. Wenn allerdings das Badbit gesetzt ist, ist die Integrität des Streams verloren. Man kann davon ausgehen, dass der Fehler nicht mehr behebbar ist.</p>
<p>Kleine Übersicht:</p>
<ul>
<li>good() --&gt; Wahr, wenn <strong>kein</strong> errorflag gesetzt ist</li>
<li>eof() --&gt; Wahr, wenn <strong>eofbit</strong> gesetzt ist</li>
<li>fail() --&gt; Wahr, wenn <strong>failbit</strong> oder <strong>badbit</strong> gesetzt ist</li>
<li>bad() --&gt; Wahr, wenn <strong>badbit</strong> gesetzt ist</li>
<li>operator !() --&gt; Siehe fail()</li>
<li>operator void* () --&gt; NULL pointer wenn fail(), ansonsten ein &quot;nicht NULL&quot; Wert</li>
</ul>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;

int _tmain(int argc, _TCHAR* argv[])
{
	std::ofstream Datei(&quot;C:/Test.txt&quot;);
	Datei.open(&quot;C:/Test2.txt&quot;);
	if(Datei.fail())
	{
		std::cout &lt;&lt; &quot;Failed, but ...&quot; &lt;&lt; std::endl;
		if(Datei.is_open())
		{
			std::cout &lt;&lt; &quot;C:/Test.txt is still open and connected to stream&quot; &lt;&lt; std::endl;
			Datei.clear();
		}

	}
	Datei &lt;&lt; &quot;Hallo Welt\n&quot;;
	Datei.close();
	return 0;
}
</code></pre>
<p>Probier mal kurz dieses Programm aus....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185111</guid><dc:creator><![CDATA[Paddy@work]]></dc:creator><pubDate>Fri, 01 Dec 2006 09:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to Status der Dateioperation abfragen on Fri, 01 Dec 2006 09:11:09 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1463">@Artchi</a>:</p>
<p>Die Exceptions sind aber doch auch nur eine Kapsel um die flags, vermute ich mal...<br />
Du musst/ kannst doch beim Einschalten der Exceptions auch die errorflags angeben, bei denen eine Exception geworfen werden soll....</p>
<p>stream.exceptions(ios_base::badbit | ios::failbit || ios::eofbit);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1185114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1185114</guid><dc:creator><![CDATA[paddy@work]]></dc:creator><pubDate>Fri, 01 Dec 2006 09:11:09 GMT</pubDate></item></channel></rss>