<?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[Text zeilenweise aus datei (vllt noch nicht vorhanden) auslesen und zeilenweise wieder reinschreiben]]></title><description><![CDATA[<p>Also.</p>
<p>Mein programm hat eine wxcombobox.</p>
<p>beim start des programms moechte ich das es aus einer datei(C:\test.txt) jede zeile ausliest und jede zeile als item/text fuer die combobox verwendet und in diese einfuegt.</p>
<p>beim beenden soll das programm alle items aus der combobox in diese datei schreiben. dabei soll alles vorhandene in der textdatei ueberschrieben werden( da man im programm neue items hinzufuegen kann).</p>
<p>folgenden code habe ich bereits:</p>
<p>beim start:</p>
<pre><code class="language-cpp">void program::programActivate(wxActivateEvent&amp; event)
{
        ifstream f;  // Datei-Handle
        string s;

// hier sollte der code hin der ueberprueft ob die datei schon vorhanden ist oder neu erstellt werden muss
        f.open(&quot;C:\test.txt&quot;, ios::in);

        while (!f.eof())
        {
            getline(f, s);        // Lese eine Zeile
            Combobox-&gt;Append(s);
        }
        f.close();                // Datei wieder schließen
}
</code></pre>
<p>beim beenden habe ich bereits folgendes:</p>
<pre><code class="language-cpp">void program::programClose(wxCloseEvent&amp; event)
{
        fstream f;  // Datei-Handle
        string s;
        f.open(&quot;C:\test.txt&quot;, ios::out | ios::trunc); // ios::trunc soll den inhalt loeschen
        int items = 0;
        items = Combobox-&gt;GetCount();  // getcount soll die anzahl an items zurueckgeben, stimmt das?
        int i = 0;

        while (i != items)         
        {
            s = Combobox-&gt;GetString(i);
//wenn i = items ist dann kein \n anhaengen
            if (i == items)
            {
            f &lt;&lt; s;
            }
            else
            {
            f &lt;&lt; s &lt;&lt; &quot;\n&quot;;
            }
            i++;
        }
        f.close();                // Datei wieder schließen

    Destroy();
}
</code></pre>
<p>ist das zu kompliziert?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/163872/text-zeilenweise-aus-datei-vllt-noch-nicht-vorhanden-auslesen-und-zeilenweise-wieder-reinschreiben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 13:28:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/163872.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Nov 2006 17:52:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Text zeilenweise aus datei (vllt noch nicht vorhanden) auslesen und zeilenweise wieder reinschreiben on Thu, 02 Nov 2006 17:52:30 GMT]]></title><description><![CDATA[<p>Also.</p>
<p>Mein programm hat eine wxcombobox.</p>
<p>beim start des programms moechte ich das es aus einer datei(C:\test.txt) jede zeile ausliest und jede zeile als item/text fuer die combobox verwendet und in diese einfuegt.</p>
<p>beim beenden soll das programm alle items aus der combobox in diese datei schreiben. dabei soll alles vorhandene in der textdatei ueberschrieben werden( da man im programm neue items hinzufuegen kann).</p>
<p>folgenden code habe ich bereits:</p>
<p>beim start:</p>
<pre><code class="language-cpp">void program::programActivate(wxActivateEvent&amp; event)
{
        ifstream f;  // Datei-Handle
        string s;

// hier sollte der code hin der ueberprueft ob die datei schon vorhanden ist oder neu erstellt werden muss
        f.open(&quot;C:\test.txt&quot;, ios::in);

        while (!f.eof())
        {
            getline(f, s);        // Lese eine Zeile
            Combobox-&gt;Append(s);
        }
        f.close();                // Datei wieder schließen
}
</code></pre>
<p>beim beenden habe ich bereits folgendes:</p>
<pre><code class="language-cpp">void program::programClose(wxCloseEvent&amp; event)
{
        fstream f;  // Datei-Handle
        string s;
        f.open(&quot;C:\test.txt&quot;, ios::out | ios::trunc); // ios::trunc soll den inhalt loeschen
        int items = 0;
        items = Combobox-&gt;GetCount();  // getcount soll die anzahl an items zurueckgeben, stimmt das?
        int i = 0;

        while (i != items)         
        {
            s = Combobox-&gt;GetString(i);
//wenn i = items ist dann kein \n anhaengen
            if (i == items)
            {
            f &lt;&lt; s;
            }
            else
            {
            f &lt;&lt; s &lt;&lt; &quot;\n&quot;;
            }
            i++;
        }
        f.close();                // Datei wieder schließen

    Destroy();
}
</code></pre>
<p>ist das zu kompliziert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167170</guid><dc:creator><![CDATA[kmindi]]></dc:creator><pubDate>Thu, 02 Nov 2006 17:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to Text zeilenweise aus datei (vllt noch nicht vorhanden) auslesen und zeilenweise wieder reinschreiben on Thu, 02 Nov 2006 17:56:57 GMT]]></title><description><![CDATA[<p>Also das sieht doch recht gut aus, nur solltest du aus dem while(!f.eof()) lieber while(f) machen - damit fängst du ein &quot;Datei nicht vorhanden&quot; direkt mit ab. (wenn die Datei nicht geöffnet werden könnte setzt sie afair das Fehlerflag)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167175</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 02 Nov 2006 17:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to Text zeilenweise aus datei (vllt noch nicht vorhanden) auslesen und zeilenweise wieder reinschreiben on Thu, 02 Nov 2006 18:05:03 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Also das sieht doch recht gut aus, nur solltest du aus dem while(!f.eof()) lieber while(f) machen - damit fängst du ein &quot;Datei nicht vorhanden&quot; direkt mit ab. (wenn die Datei nicht geöffnet werden könnte setzt sie afair das Fehlerflag)</p>
</blockquote>
<p>aber das while(!f.eof()) sagt mir doch wann die datei zu ende ist</p>
<p>ob die datei vorhanden ist muss ich schon beim oeffnen wissen/ueberpruefen -&gt; und da dann halt erstellen oder nicht erstellen</p>
<p>oder hab ich das falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167180</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 02 Nov 2006 18:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Text zeilenweise aus datei (vllt noch nicht vorhanden) auslesen und zeilenweise wieder reinschreiben on Thu, 02 Nov 2006 20:30:15 GMT]]></title><description><![CDATA[<p>also jetzt funktioniert es anscheinend:</p>
<pre><code class="language-cpp">void program::programActivate(wxActivateEvent&amp; event)
{
        fstream f;  // Datei-Handle
        string s;
        f.open(&quot;C:\test.txt&quot;, ios::in);
        while(f)
        {
            while (!f.eof())          // Solange noch Daten vorliegen
            {
                getline(f, s);        // Lese eine Zeile

                if (s != &quot;&quot;)
                {
                    Combobox-&gt;Append(s);
                }
            }
            f.close();                // Datei wieder schließen
        }
}
</code></pre>
<pre><code class="language-cpp">void program::programClose(wxCloseEvent&amp; event)
{

        fstream f;  // Datei-Handle
        string s;
        f.open(&quot;C:\test.txt&quot;, ios::out | ios::trunc);
        int items = 0;
        items = Combobox-&gt;GetCount();
        int i = 0;

        while (i != items)
        {
            s = Combobox-&gt;GetString(i);
            if (i == items)
            {
            f &lt;&lt; s;
            }
            else
            {
            f &lt;&lt; s &lt;&lt; &quot;\n&quot;;
            }
            i++;
        }
        f.close();

    Destroy();
}
</code></pre>
<p>ich glaub es lag an dem was CStoll geschrieben hat ( while(f) ), das hab ich jetzt um das ganze was bei while(!f.eof()) passiert gemacht.<br />
danke fuer den tipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167278</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 02 Nov 2006 20:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Text zeilenweise aus datei (vllt noch nicht vorhanden) auslesen und zeilenweise wieder reinschreiben on Fri, 03 Nov 2006 07:12:25 GMT]]></title><description><![CDATA[<p>OK, dann mal langsam: <code>while(f)</code> (alias <code>while(f.good())</code> ) prüft nach, ob die Datei einsatzbereit ist - das schließt neben EOF auch Fehler beim Einlesen und &quot;Datei nicht geöffnet&quot; mit ein. Da brauchst du keine doppelt verschachtelte while()-Schleife, sondern da reicht das:</p>
<pre><code class="language-cpp">f.open(&quot;C:\test.txt&quot;, ios::in);
while (f)          // Solange noch Daten vorliegen
{
  getline(f, s);        // Lese eine Zeile
  if (s != &quot;&quot;)
    Combobox-&gt;Append(s);
}
</code></pre>
<p>(übrigens das f.close() kannst du dir auch sparen - das macht der Stream selber, wenn die Funktion beendet wird ;))</p>
<p>Wenn die Datei existiert (und geöffnet werden konnte), läuft diese Schleife solange durch, bis sie am Ende angekommen ist. Andernfalls scheitert schon das open(), setzt ein Fehlerflag und die Schleife wird sofort beendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167411</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 03 Nov 2006 07:12:25 GMT</pubDate></item><item><title><![CDATA[Reply to Text zeilenweise aus datei (vllt noch nicht vorhanden) auslesen und zeilenweise wieder reinschreiben on Fri, 03 Nov 2006 14:55:35 GMT]]></title><description><![CDATA[<p>aha, das wusste ich noch nicht, werde das gleich mal ausprobieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167766</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 03 Nov 2006 14:55:35 GMT</pubDate></item><item><title><![CDATA[Reply to Text zeilenweise aus datei (vllt noch nicht vorhanden) auslesen und zeilenweise wieder reinschreiben on Fri, 03 Nov 2006 15:14:42 GMT]]></title><description><![CDATA[<p>du brauchst sogar nichtmal open kannst den code also noch weiter verkürzen. Außerdem kannst du einfach ifstream verwenden, dann brauchst du ios::in nicht. Auch ist die funktion empty() schöner als der vergleich mit &quot;&quot;.</p>
<pre><code class="language-cpp">void program::programActivate(wxActivateEvent&amp; event)
{
        ifstream f(&quot;C:\test.txt&quot;);
        string s;
        while(f)
        {
            getline(f, s);        // Lese eine Zeile
            if(!s.empty())
                Combobox-&gt;Append(s);
        }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1167774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167774</guid><dc:creator><![CDATA[asdasd]]></dc:creator><pubDate>Fri, 03 Nov 2006 15:14:42 GMT</pubDate></item><item><title><![CDATA[Reply to Text zeilenweise aus datei (vllt noch nicht vorhanden) auslesen und zeilenweise wieder reinschreiben on Fri, 03 Nov 2006 15:53:13 GMT]]></title><description><![CDATA[<p>ja stimmt hab das mal so wie dus grade gepostet hast ubernommen, es funktioniert, dankeschoen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167797</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 03 Nov 2006 15:53:13 GMT</pubDate></item></channel></rss>