<?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[Letzter Buchstabe doppelt]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe das folgende Programm geschrieben, um mir die Handhabung von fstream, algorithm und vector einzuprägen.<br />
Funktioniert auch alles super, allerding wird beim Lesen der Datei (mit .get()) der letzte Buchstabe aus der Datei doppelt ausgegeben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;fstream&gt;
using namespace std;

int main()
{
    vector&lt;char&gt; Buchstaben;
    vector&lt;char&gt;::iterator it;
    char Buchstabe;
    fstream f;

    f.open(&quot;daten.txt&quot;, ios::out);
    f &lt;&lt; &quot;Text geht rein!&quot;;
    f.close();

    f.open(&quot;daten.txt&quot;, ios::in);
    while(!f.eof())
    {
    f.get(Buchstabe);
    Buchstaben.push_back(Buchstabe);
    cout &lt;&lt; Buchstabe;
    }
    f.close();

    cout &lt;&lt; endl;
    reverse(Buchstaben.begin(),Buchstaben.end());
    it = Buchstaben.begin();
    while(it!=Buchstaben.end())
    {
        cout &lt;&lt; *it;
        it++;
    }

    char dumb;
    cin  &gt;&gt; dumb;
    return 0;
}
</code></pre>
<p>Wieso wird der Buchstabe doppelt ausgegeben? Wie verhindere ich es?</p>
<p>grüße,<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271303/letzter-buchstabe-doppelt</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 14:01:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271303.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jul 2010 10:19:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 10:19:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe das folgende Programm geschrieben, um mir die Handhabung von fstream, algorithm und vector einzuprägen.<br />
Funktioniert auch alles super, allerding wird beim Lesen der Datei (mit .get()) der letzte Buchstabe aus der Datei doppelt ausgegeben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;fstream&gt;
using namespace std;

int main()
{
    vector&lt;char&gt; Buchstaben;
    vector&lt;char&gt;::iterator it;
    char Buchstabe;
    fstream f;

    f.open(&quot;daten.txt&quot;, ios::out);
    f &lt;&lt; &quot;Text geht rein!&quot;;
    f.close();

    f.open(&quot;daten.txt&quot;, ios::in);
    while(!f.eof())
    {
    f.get(Buchstabe);
    Buchstaben.push_back(Buchstabe);
    cout &lt;&lt; Buchstabe;
    }
    f.close();

    cout &lt;&lt; endl;
    reverse(Buchstaben.begin(),Buchstaben.end());
    it = Buchstaben.begin();
    while(it!=Buchstaben.end())
    {
        cout &lt;&lt; *it;
        it++;
    }

    char dumb;
    cin  &gt;&gt; dumb;
    return 0;
}
</code></pre>
<p>Wieso wird der Buchstabe doppelt ausgegeben? Wie verhindere ich es?</p>
<p>grüße,<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931903</guid><dc:creator><![CDATA[=)]]></dc:creator><pubDate>Mon, 26 Jul 2010 10:19:14 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 10:24:23 GMT]]></title><description><![CDATA[<p>Standardfehler, du liest in der Datei nach dem EOF noch weiter. Der Denkfehler ist, dass du glaubst, eof() würde bereits true, wenn der nächste get()-Aufruf das Dateiende erreichen würde. Das ist aber nicht so, eof() wird erst true, nachdem ein vorheriges get() durch Erreichen des Dateiendes fehlgeschlagen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931905</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 26 Jul 2010 10:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 10:25:44 GMT]]></title><description><![CDATA[<p>Vertausch mal Zeile 32 mit Zeile 33... o0</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931907</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 26 Jul 2010 10:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 10:26:50 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Vertausch mal Zeile 32 mit Zeile 33... o0</p>
</blockquote>
<p>Nicht ganz <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1931908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931908</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 26 Jul 2010 10:26:50 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 10:27:54 GMT]]></title><description><![CDATA[<p>Du kannst <code>system(&quot;pause&quot;);</code> (oder eben groß geschrieben) verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931910</guid><dc:creator><![CDATA[lk]]></dc:creator><pubDate>Mon, 26 Jul 2010 10:27:54 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 10:42:49 GMT]]></title><description><![CDATA[<p>lk schrieb:</p>
<blockquote>
<p>Du kannst <code>system(&quot;pause&quot;);</code> (oder eben groß geschrieben) verwenden.</p>
</blockquote>
<p>Hab mir die Methode von 'dumb' angewöhnt. Find ich besser, ist aber glaube ich vom Geschmack abhängig.</p>
<p>Ich have das Problem nun so 'gelöst':</p>
<pre><code class="language-cpp">while(!f.eof())
    {
    f.get(Buchstabe);
    if(!f.eof())
    {
        Buchstaben.push_back(Buchstabe);
        cout &lt;&lt; Buchstabe;
    }
    }
    f.close();
</code></pre>
<p>Die Methode funktioniert, kommt mir die etwas komisch vor, da 2x &quot;!f.eof&quot; geprüft wird. Ist diese Methode in Ordnung, oder sollte ich das anders lösen?</p>
<p>grüße,<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931916</guid><dc:creator><![CDATA[=)]]></dc:creator><pubDate>Mon, 26 Jul 2010 10:42:49 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 10:46:24 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /> schrieb:</p>
<blockquote>
<p>Die Methode funktioniert, kommt mir die etwas komisch vor, da 2x &quot;!f.eof&quot; geprüft wird. Ist diese Methode in Ordnung, oder sollte ich das anders lösen?</p>
</blockquote>
<p>Du hast richtig erkannt, dass dies nicht sehr elegant ist. Üblicherweise macht man dies so:</p>
<pre><code class="language-cpp">while(f.get(Buchstabe))
{
    Buchstaben.push_back(Buchstabe);
    cout &lt;&lt; Buchstabe;
}
f.close();
</code></pre>
<p>Man könnte jetzt noch was über fstreams, open, close und Gültigkeitsbereiche sagen, aber ich will dich jetzt nicht unnötig verwirren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931919</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 26 Jul 2010 10:46:24 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 11:08:11 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /> schrieb:</p>
<blockquote>
<p>Hab mir die Methode von 'dumb' angewöhnt. Find ich besser, ist aber glaube ich vom Geschmack abhängig.</p>
</blockquote>
<p>Ist auch besser. Noch eleganter finde ich aber ein einfaches <code>cin.get();</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931930</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Mon, 26 Jul 2010 11:08:11 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 12:48:34 GMT]]></title><description><![CDATA[<p>Man kann auch sein Programm einfach über ein kleines Batchfile starten, wo im Batchfile dann nach <code>MyApp.exe</code> noch ein <code>pause</code> drinsteht.<br />
Dadurch muss man seinen Code nicht mit Test-Artefakten &quot;verunreinigen&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931988</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 26 Jul 2010 12:48:34 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 13:24:17 GMT]]></title><description><![CDATA[<p>Oder einfach in der Konsole/Bash ausführen, dann sieht man das Ergebnis auch ohne irgendwelche Skripte und kann argv für Debugzwecke etc. nutzen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932017</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Mon, 26 Jul 2010 13:24:17 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 16:10:35 GMT]]></title><description><![CDATA[<p>Gibt es eine möglichkeit die Datei nur einmal zu öffnen und sowohl Daten auszugeben und einzulesen?</p>
<pre><code class="language-cpp">f.open(&quot;daten.txt&quot;, ios::out | ios::in);
    f &lt;&lt; &quot;Text geht rein!&quot;;

    while(f.get(Buchstabe))
    {
        Buchstaben.push_back(Buchstabe);
        cout &lt;&lt; Buchstabe;
    }
    f.close();
</code></pre>
<p>Wird auch ausgeführt, Compiler gibt also keine Fehlermeldungen. Allerdings wird der Text nicht ausgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932138</guid><dc:creator><![CDATA[=)]]></dc:creator><pubDate>Mon, 26 Jul 2010 16:10:35 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 16:28:51 GMT]]></title><description><![CDATA[<p>cout musst du flushen, sonst schreibt der erst wenn der Puffer voll ist ... siehe doku <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> std::endl; flush't implizit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932148</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Mon, 26 Jul 2010 16:28:51 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Mon, 26 Jul 2010 16:35:35 GMT]]></title><description><![CDATA[<p>padreigh schrieb:</p>
<blockquote>
<p>cout musst du flushen, sonst schreibt der erst wenn der Puffer voll ist ... siehe doku <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> std::endl; flush't implizit.</p>
</blockquote>
<p>Danke, funktioniert nun! ( &lt;&lt; flush) Wieso ist das nur nötig, wenn ich die Zugriffstypen mit &quot;|&quot; verbinde?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932153</guid><dc:creator><![CDATA[=)]]></dc:creator><pubDate>Mon, 26 Jul 2010 16:35:35 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Tue, 27 Jul 2010 14:12:27 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /> schrieb:</p>
<blockquote>
<p>... wenn ich die Zugriffstypen mit &quot;|&quot; verbinde?</p>
</blockquote>
<p><code>std::cout != f</code> .. oder was meinst du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932600</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Tue, 27 Jul 2010 14:12:27 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Tue, 27 Jul 2010 14:43:50 GMT]]></title><description><![CDATA[<p>padreigh schrieb:</p>
<blockquote>
<p><code>std::cout != f</code> .. oder was meinst du?</p>
</blockquote>
<p>Verstehe selber meine Frage von gestern nicht mehr so recht. <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="🙄"
    /><br />
Habe mir die Doku von flush angeschaut. Allerdings verstehe ich doch nicht so recht, wie ich sie bei mir im Code anzuwenden habe. Also an f.get.</p>
<p>Sobald ich &quot;flushe&quot; wird der Text gedruckt, richtig?<br />
Flushe ich dann mit:</p>
<pre><code class="language-cpp">cout &lt;&lt; flush;
</code></pre>
<p>Oder mit:</p>
<pre><code class="language-cpp">flush(f)
</code></pre>
<p>Vorallem wo soll ich flushen?</p>
<p>grüße,<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932615</guid><dc:creator><![CDATA[=)]]></dc:creator><pubDate>Tue, 27 Jul 2010 14:43:50 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Tue, 27 Jul 2010 14:48:26 GMT]]></title><description><![CDATA[<p>cout&lt;&lt;flush;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932617</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Tue, 27 Jul 2010 14:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Tue, 27 Jul 2010 14:52:24 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">f.open(&quot;daten.txt&quot;, ios::out | ios::in);
        f &lt;&lt; &quot;Text geht rein!&quot;;

        while(f.get(Buchstabe))
        {
            cout&lt;&lt;flush;
            Buchstaben.push_back(Buchstabe);
            cout &lt;&lt; Buchstabe;
        }
    f.close();
</code></pre>
<p>Compiler meckert nicht, Text wird aber dennoch nicht ausgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932618</guid><dc:creator><![CDATA[=)]]></dc:creator><pubDate>Tue, 27 Jul 2010 14:52:24 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Tue, 27 Jul 2010 15:05:19 GMT]]></title><description><![CDATA[<p>edit: Quatsch. Vorgeschichte des Threads nicht beachtet.</p>
<p>edit2: So, Erstmal den Thread gelesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> . So geht das:</p>
<pre><code class="language-cpp">fstream f;
  char Buchstabe;
  f.open(&quot;daten.txt&quot;, ios::out);  // Lege Datei an, falls sie nicht existiert.
  f.close();                      // Denn ansonsten könnte man sie nicht zum Lesen öffnen

  f.open(&quot;daten.txt&quot;, ios::out | ios::in);  // Dies geht jetzt nicht mehr schief.
  f&lt;&lt;&quot;Text geht raus&quot;;
  f.seekg(0);                     // Setze Lesezeiger auf den Anfang
  while(f.get(Buchstabe))
    {
      cout &lt;&lt; Buchstabe;
    }
  f.close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1932622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932622</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 27 Jul 2010 15:05:19 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Tue, 27 Jul 2010 15:12:01 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">f.open(&quot;daten.txt&quot;, ios::out | ios::in);
        f &lt;&lt; &quot;Text geht rein!&quot;;

        while(f.get(Buchstabe))
        { 
            Buchstaben.push_back(Buchstabe);
            cout &lt;&lt; Buchstabe &lt;&lt; flush;
        }
    f.close();
</code></pre>
<p>Versuch so <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932633</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Tue, 27 Jul 2010 15:12:01 GMT</pubDate></item><item><title><![CDATA[Reply to Letzter Buchstabe doppelt on Tue, 27 Jul 2010 15:22:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">f.seekg(0);                     // Setze Lesezeiger auf den Anfang
</code></pre>
<p>Ich sollte mein Cpp-Buch etwas genauer lesen... hatte aber auch nicht daran gedacht, dass der Zeiger am Ende ist. (Obwohl er das nach dem Schreiben nur sein kann).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932639</guid><dc:creator><![CDATA[=)]]></dc:creator><pubDate>Tue, 27 Jul 2010 15:22:29 GMT</pubDate></item></channel></rss>