<?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[fstream will beim dritten Mal nicht mehr!]]></title><description><![CDATA[<p>Hallo!</p>
<p>Könnt ihr mir erklären, warum, nachdem ich eine Datei ausgelesen habe und wieder geschlossen habe, diese sich nicht mehr wieder beschreiben lässt?</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::out | std::ios::app);
	dataBaseFile.close();
	dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::in);

	// Hier steht dann Code zum einlesen

	dataBaseFile.close();

	dataBaseFile.open(&quot;Datenbank.db&quot;);

	dataBaseFile &lt;&lt; &quot;Hearst&quot;;

	dataBaseFile.close();
</code></pre>
<p>So funktioniert es. Es wird zum Schluss &quot;Hearst&quot; in die Datei geschrieben. Wenn ich nun jedoch den Code zum einlesen hinzufüge:</p>
<pre><code class="language-cpp">dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::out | std::ios::app);
	dataBaseFile.close();
	dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::in);

	for(; std::getline(dataBaseFile, rowHelper); ++numBannedPlayers)
		if(rowHelper.size() &gt; 0 &amp;&amp; numBannedPlayers &lt; 4)
			SendMessage(editFieldHandles[numBannedPlayers], WM_SETTEXT, 0, reinterpret_cast&lt;LPARAM&gt;(rowHelper.c_str()));

	numBannedPlayers -= 3;

	dataBaseFile.close();

	dataBaseFile.open(&quot;Datenbank.db&quot;);

	dataBaseFile &lt;&lt; &quot;Hearst&quot;;

	dataBaseFile.close();
</code></pre>
<p>Dann wird zum Schluss nix mehr in die Datei geschrieben, funzt einfach nicht.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180074/fstream-will-beim-dritten-mal-nicht-mehr</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 14:36:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180074.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Apr 2007 13:19:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 13:19:43 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Könnt ihr mir erklären, warum, nachdem ich eine Datei ausgelesen habe und wieder geschlossen habe, diese sich nicht mehr wieder beschreiben lässt?</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::out | std::ios::app);
	dataBaseFile.close();
	dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::in);

	// Hier steht dann Code zum einlesen

	dataBaseFile.close();

	dataBaseFile.open(&quot;Datenbank.db&quot;);

	dataBaseFile &lt;&lt; &quot;Hearst&quot;;

	dataBaseFile.close();
</code></pre>
<p>So funktioniert es. Es wird zum Schluss &quot;Hearst&quot; in die Datei geschrieben. Wenn ich nun jedoch den Code zum einlesen hinzufüge:</p>
<pre><code class="language-cpp">dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::out | std::ios::app);
	dataBaseFile.close();
	dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::in);

	for(; std::getline(dataBaseFile, rowHelper); ++numBannedPlayers)
		if(rowHelper.size() &gt; 0 &amp;&amp; numBannedPlayers &lt; 4)
			SendMessage(editFieldHandles[numBannedPlayers], WM_SETTEXT, 0, reinterpret_cast&lt;LPARAM&gt;(rowHelper.c_str()));

	numBannedPlayers -= 3;

	dataBaseFile.close();

	dataBaseFile.open(&quot;Datenbank.db&quot;);

	dataBaseFile &lt;&lt; &quot;Hearst&quot;;

	dataBaseFile.close();
</code></pre>
<p>Dann wird zum Schluss nix mehr in die Datei geschrieben, funzt einfach nicht.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275145</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 28 Apr 2007 13:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 15:01:27 GMT]]></title><description><![CDATA[<p>Ich wusste es doch, irgenwas vergesse ich meistens...</p>
<p>dataBaseFile ist vom Typ std::fstream.<br />
Ist doch für Lesen UND Schreiben gedacht?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275213</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 28 Apr 2007 15:01:27 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 15:02:25 GMT]]></title><description><![CDATA[<p>Ach scheisse, steht eh im Titel. Naja egal...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275214</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 28 Apr 2007 15:02:25 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 16:16:55 GMT]]></title><description><![CDATA[<p>hast ihm zum schluss nciht mehr gesagt ob es es öffnen zum lesen oder öffnen zum schreiben soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275276</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 28 Apr 2007 16:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 16:36:50 GMT]]></title><description><![CDATA[<p>Aber std::fstream impliziert doch std::ios::in sowie std::ios::out, steht in meinem Buch.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275289</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 28 Apr 2007 16:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 16:41:22 GMT]]></title><description><![CDATA[<p>Selbst, wenn ich beim letzten open std::ios::out angebe, steht kein &quot;Herst&quot; drin, die Datei wird nur mit nichts überschrieben.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275293</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 28 Apr 2007 16:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 16:45:33 GMT]]></title><description><![CDATA[<p>Hast du geprüft ob sich der stream in einem Fehlerzustand befindet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275301</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Sat, 28 Apr 2007 16:45:33 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 16:56:16 GMT]]></title><description><![CDATA[<p>dataBaseFile.fail() == true</p>
<p>Aber erst direkt nach dem letzten open. Warum? Vorher wird auch alles korrekt ausgelesen.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275305</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 28 Apr 2007 16:56:16 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 17:02:47 GMT]]></title><description><![CDATA[<p>Doch nicht nach dem letzten open sondern nach meinem Code...</p>
<pre><code class="language-cpp">dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::out | std::ios::app);
    dataBaseFile.close();
    dataBaseFile.open(&quot;Datenbank.db&quot;, std::ios::in);

    for(; std::getline(dataBaseFile, rowHelper); ++numBannedPlayers)
        if(rowHelper.size() &gt; 0 &amp;&amp; numBannedPlayers &lt; 4)
            SendMessage(editFieldHandles[numBannedPlayers], WM_SETTEXT, 0, reinterpret_cast&lt;LPARAM&gt;(rowHelper.c_str()));

    numBannedPlayers -= 3;

    // dataBaseFile.fail() == true 

    dataBaseFile.close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1275308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275308</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Sat, 28 Apr 2007 17:02:47 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 17:54:12 GMT]]></title><description><![CDATA[<p>dataBaseFile.clear() nach dem Auslesen hat anscheinend geholfen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275338</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 28 Apr 2007 17:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 17:58:02 GMT]]></title><description><![CDATA[<p>Damit hast du das Symptom behoben aber nicht die Ursache heraus gefunden. Du solltest prüfen ob die zuvor eingelesenen Daten auch alle richtig eingelesen wurden, da es dort zu einem Fehler gekommen sein muss (und das failbit gesetzt wurde).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275343</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Sat, 28 Apr 2007 17:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 19:31:26 GMT]]></title><description><![CDATA[<p>fail() ist nun nicht mehr true, nachdem ich clear() aufgerufen habe.<br />
Es scheint nun alles zu funktionieren...</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275381</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 28 Apr 2007 19:31:26 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 19:34:05 GMT]]></title><description><![CDATA[<p>Ja ist logisch das fail danach nicht mehr auf &quot;false&quot; steht ... du hast die States des Streams alle wieder auf die Default-Werte, durch die &quot;Clean&quot;-Funktion, zurückgesetzt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275382</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 28 Apr 2007 19:34:05 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sat, 28 Apr 2007 20:45:41 GMT]]></title><description><![CDATA[<p>Mhm, dachte ich mir. Aber es funktioniert trotzdem alles. Durch was kann das failbit entstanden sein? Ihr seht ja den Code...</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275404</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 28 Apr 2007 20:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to fstream will beim dritten Mal nicht mehr! on Sun, 29 Apr 2007 06:06:52 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::getline(dataBaseFile, rowHelper)
</code></pre>
<p>das hat es ausgelöst.</p>
<p>irgendwann erreichst du in deiner schleife das ende der datei, der stream versucht getline auszuführen-&gt; das geht schief, und darüber wirst du dann informiert. Also kein Hexenwerk ;).<br />
Diesen Umstand, dass das failbit gesetz wird nutzt du übrigens bereits in der for-schleife selbst aus, weil der rückgabewert von getline ein istream ist, der nach bool gecastet wird, und der ergibt nur dann false, wenn irgendwas schiefgelaufen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275498</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 29 Apr 2007 06:06:52 GMT</pubDate></item></channel></rss>