<?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 mit in|out]]></title><description><![CDATA[<p>Hallo,</p>
<p>Warum funktioniert dieses Programm (reduziertes Beispiel) nicht richtig?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

int main()
{
 std::string test;
 std::fstream datei;
 datei.open(&quot;test&quot;);  //Auch mit &quot;in|out&quot; kein Erfolg...
 datei &lt;&lt; &quot;test&quot;;      //Fehler...: Schreibt nicht, legt nicht an...
 datei.seekg(0);       //&quot;g&quot; oder &quot;p&quot;
 datei &gt;&gt; test;
 datei.close();
 std::cout &lt;&lt; test &lt;&lt; std::endl;
 return 0;
}
</code></pre>
<p>Compiliert tadellos...</p>
<p>Mit &quot;in|out|app&quot; geht es... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Alles unter Debian Lenny mit gcc4.1.3;<br />
Rechte richtig und geprüft! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Danke schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209831/fstream-mit-in-out</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 02:22:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209831.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Apr 2008 19:02:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fstream mit in|out on Thu, 03 Apr 2008 19:03:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Warum funktioniert dieses Programm (reduziertes Beispiel) nicht richtig?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

int main()
{
 std::string test;
 std::fstream datei;
 datei.open(&quot;test&quot;);  //Auch mit &quot;in|out&quot; kein Erfolg...
 datei &lt;&lt; &quot;test&quot;;      //Fehler...: Schreibt nicht, legt nicht an...
 datei.seekg(0);       //&quot;g&quot; oder &quot;p&quot;
 datei &gt;&gt; test;
 datei.close();
 std::cout &lt;&lt; test &lt;&lt; std::endl;
 return 0;
}
</code></pre>
<p>Compiliert tadellos...</p>
<p>Mit &quot;in|out|app&quot; geht es... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Alles unter Debian Lenny mit gcc4.1.3;<br />
Rechte richtig und geprüft! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Danke schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486021</guid><dc:creator><![CDATA[*-star*home-*]]></dc:creator><pubDate>Thu, 03 Apr 2008 19:03:56 GMT</pubDate></item><item><title><![CDATA[Reply to fstream mit in|out on Thu, 03 Apr 2008 19:11:31 GMT]]></title><description><![CDATA[<p>du hast deine flags auf zuerst lesen und dann schreiben gesetzt, wenn du aber zuerst in die datei schreibst solltest du die flags auch zuerst mit schreiben beginnnen...nur so kann ich mir das vorstellen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486031</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Thu, 03 Apr 2008 19:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to fstream mit in|out on Thu, 03 Apr 2008 19:31:16 GMT]]></title><description><![CDATA[<p>Ich kann dein Problem mit MinGW-GCC-4.2.1 nachvollziehen, kann dir aber nicht sagen warum das so ist. Dass die Reihenfolge von in und out eine Rolle spielt ist imho völliger Humbug, da die Parameter verodert werden und die Reihenfolge dabei keinen Einfluss hat. Ich vermute mal, dass sich der Stream ohne app oder trunc in einer Art undefiniertem Zustand befindet, da unklar ist ob der Zeiger ans Dateiende gesetzt werden soll und damit Text angehängt werden soll oder ob falls die Datei bereits vorhanden ist der Zeiger an den Anfang gesetzt werden soll und die Datei damit überschrieben werden soll. Durch die Angabe von app oder trunc machst du die Sache eindeutig.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

int main(int argc, char* argv[])
{
    std::string test;
    fstream datei(&quot;test&quot;, ios::out | ios::in | ios::app); // ios::trunc statt ios::app funktioniert ebenfalls
    //datei.open(&quot;test&quot;); das kann man auch direkt im Konstruktor machen
    datei &lt;&lt; &quot;test&quot;;
    datei.seekg(0);
    datei &gt;&gt; test;
    //datei.close() unnötig, erledigt der Destruktor von fstream
    cout &lt;&lt; test &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1486040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486040</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Thu, 03 Apr 2008 19:31:16 GMT</pubDate></item><item><title><![CDATA[Reply to fstream mit in|out on Thu, 03 Apr 2008 19:55:58 GMT]]></title><description><![CDATA[<p>also ich würde das ganze nicht mit strigns machen sondern mit einzelnen chars</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

int main()
{
    char puffer;
    fstream datei(&quot;test&quot;, ios::out | ios::in | ios::app); // ios::trunc statt ios::app funktioniert ebenfalls

    datei &lt;&lt; &quot;test&quot;;
    datei.seekg(0);

    char text[5];
    int i = 0;

    while( !datei.eof() )
    {
        datei &gt;&gt; puffer;
        text[i++] = puffer;
    }

    cout &lt;&lt; text &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1486055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486055</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 03 Apr 2008 19:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to fstream mit in|out on Thu, 03 Apr 2008 20:31:12 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>also ich würde das ganze nicht mit strigns machen sondern mit einzelnen chars</p>
</blockquote>
<p>Schwachsinn. Das hat mit dem Problem, dass die Datei nicht angelegt wird und nichts hinein geschrieben wird, gar nichts zu tun. Außerdem bevorzugt man in C++ immer Strings vor char-Arrays, weil diese einem die Speicherverwaltung abnehmen.</p>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char text[5];
    int i = 0;

    while( !datei.eof() )
    {
        datei &gt;&gt; puffer;
        text[i++] = puffer;
    }
</code></pre>
</blockquote>
<p>Genauso produziert man fehlerhafte Software. Was ist, wenn die Datei mehr als 5 Buchstaben enthält? Dann hast du einen Buffer Overflow, den du mit der string-Klasse elegant vermieden hättest. Praktisch kannst du damit ja sogar nur 4 Buchstaben einlesen, weil du noch die abschließende '\0' bedenken musst.<br />
Merke: Finger weg von char-Arrays wenn man C++ benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486073</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Thu, 03 Apr 2008 20:31:12 GMT</pubDate></item><item><title><![CDATA[Reply to fstream mit in|out on Fri, 04 Apr 2008 12:20:01 GMT]]></title><description><![CDATA[<p>tschuldigung leute</p>
<p>bin auch noch en noob in c++<br />
hab vor c++ java gemacht und da sind die strings ja richtig eifnach und komfortabel</p>
<p>und mein erfahrungen mit c++ strings (also der klasse) war auch nicht so pralle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486415</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 04 Apr 2008 12:20:01 GMT</pubDate></item><item><title><![CDATA[Reply to fstream mit in|out on Fri, 04 Apr 2008 17:39:58 GMT]]></title><description><![CDATA[<p>OhneName schrieb:</p>
<blockquote>
<p>Ich kann dein Problem mit MinGW-GCC-4.2.1 nachvollziehen, kann dir aber nicht sagen warum das so ist. Dass die Reihenfolge von in und out eine Rolle spielt ist imho völliger Humbug, da die Parameter verodert werden und die Reihenfolge dabei keinen Einfluss hat. Ich vermute mal, dass sich der Stream ohne app oder trunc in einer Art undefiniertem Zustand befindet, da unklar ist ob der Zeiger ans Dateiende gesetzt werden soll und damit Text angehängt werden soll oder ob falls die Datei bereits vorhanden ist der Zeiger an den Anfang gesetzt werden soll und die Datei damit überschrieben werden soll. Durch die Angabe von app oder trunc machst du die Sache eindeutig.</p>
</blockquote>
<p>Klingt einigermaßen logisch, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1486662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1486662</guid><dc:creator><![CDATA[*-star*home-*]]></dc:creator><pubDate>Fri, 04 Apr 2008 17:39:58 GMT</pubDate></item></channel></rss>