<?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[Wiederöffnen einer Datei mit ifstream]]></title><description><![CDATA[<p>Hallo liebe Gemeinde,</p>
<p>ich habe bereits in mehreren Foren (deutsch/englisch) Antworten auf mein Problem gefunden, die helfen sollten, es dennoch aber nicht tun.</p>
<p>Ich möchte gerne in einer Schleife eine Datei mit ifstream mehrfach öffnen, auslesen und wieder schliessen. Der erste Durchlauf durch die Schleife geht reibungsfrei, beim zweiten Öffnen bringt tellg() grundsätzlich nur noch den Wert -1 statt der aktuellen Pointerposition für getline(), trotz der Empfehlungen aus anderen Foren clear() oder auch seekg() zu verwenden.</p>
<p>Ich benutze den commandline-Compiler bcc32 von Borland, Version 5.5.1.<br />
Kann mir jemand helfen ?</p>
<p>Danke und Gruß, Olaf.</p>
<pre><code>ifstream fus_datei;

... // u.a. wird dateiname definiert

for (int cnt_schicht = 0; cnt_schicht &lt; anz_schichten; cnt_schicht++)
{
   fus_datei.open(dateiname);
   fus_datei.clear();

   while (1 != 0)
   {
      ... // u.a. Definition von strstr_string

      fus_datei.getline(fus_zeile, 100, '\n');

      if (strstr(fus_zeile, strstr_string) != NULL)
      {
         cout &lt;&lt; &quot;.&quot;;

         break;   // Schleife wird vor EOF verlassen.
      }
   }

   fus_datei.seekg(0, ios_base::end);
   fus_datei.close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/241904/wiederöffnen-einer-datei-mit-ifstream</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 05:33:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/241904.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 May 2009 12:33:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wiederöffnen einer Datei mit ifstream on Wed, 27 May 2009 12:33:44 GMT]]></title><description><![CDATA[<p>Hallo liebe Gemeinde,</p>
<p>ich habe bereits in mehreren Foren (deutsch/englisch) Antworten auf mein Problem gefunden, die helfen sollten, es dennoch aber nicht tun.</p>
<p>Ich möchte gerne in einer Schleife eine Datei mit ifstream mehrfach öffnen, auslesen und wieder schliessen. Der erste Durchlauf durch die Schleife geht reibungsfrei, beim zweiten Öffnen bringt tellg() grundsätzlich nur noch den Wert -1 statt der aktuellen Pointerposition für getline(), trotz der Empfehlungen aus anderen Foren clear() oder auch seekg() zu verwenden.</p>
<p>Ich benutze den commandline-Compiler bcc32 von Borland, Version 5.5.1.<br />
Kann mir jemand helfen ?</p>
<p>Danke und Gruß, Olaf.</p>
<pre><code>ifstream fus_datei;

... // u.a. wird dateiname definiert

for (int cnt_schicht = 0; cnt_schicht &lt; anz_schichten; cnt_schicht++)
{
   fus_datei.open(dateiname);
   fus_datei.clear();

   while (1 != 0)
   {
      ... // u.a. Definition von strstr_string

      fus_datei.getline(fus_zeile, 100, '\n');

      if (strstr(fus_zeile, strstr_string) != NULL)
      {
         cout &lt;&lt; &quot;.&quot;;

         break;   // Schleife wird vor EOF verlassen.
      }
   }

   fus_datei.seekg(0, ios_base::end);
   fus_datei.close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1716727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716727</guid><dc:creator><![CDATA[Olaf23]]></dc:creator><pubDate>Wed, 27 May 2009 12:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederöffnen einer Datei mit ifstream on Wed, 27 May 2009 12:44:39 GMT]]></title><description><![CDATA[<p>1. Bitte cpp Tags verwenden.<br />
2. Wieso verwendest du nicht <code>std::string</code> in Verwendung mit der freien Funktion <code>std::getline</code> ?<br />
<a href="http://www.cplusplus.com/reference/string/string/" rel="nofollow">http://www.cplusplus.com/reference/string/string/</a><br />
<a href="http://www.cplusplus.com/reference/string/getline/" rel="nofollow">http://www.cplusplus.com/reference/string/getline/</a><br />
Das aber nur als Hinweis oder Frage aus Neugier.<br />
3. Zu deinem Problem, probier mal das hier aus:</p>
<pre><code class="language-cpp">// ifstream fus_datei; &lt;- weg damit

... // u.a. wird dateiname definiert

for (int cnt_schicht = 0; cnt_schicht &lt; anz_schichten; cnt_schicht++)
{
   // das:
   ifstream fus_datei(dateiname);
   // anstatt:
   // fus_datei.open(dateiname);

   // ganz sicher nicht mehr nötig:
   // fus_datei.clear();

   while (1 != 0)
   {
      ... // u.a. Definition von strstr_string

      fus_datei.getline(fus_zeile, 100, '\n');

      if (strstr(fus_zeile, strstr_string) != NULL)
      {
         cout &lt;&lt; &quot;.&quot;;

         break;   // Schleife wird vor EOF verlassen.
      }
   }

   // Beides auch unnötig:
   // fus_datei.seekg(0, ios_base::end);
   // fus_datei.close();
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716731</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 27 May 2009 12:44:39 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederöffnen einer Datei mit ifstream on Wed, 27 May 2009 12:51:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Danke für Deine Antwort.</p>
<p>Deinen Code-Vorschlag hatte ich in meiner allerersten Version, der hat leider auch nicht funktioniert.</p>
<p>Danke, Olaf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716734</guid><dc:creator><![CDATA[Olaf23]]></dc:creator><pubDate>Wed, 27 May 2009 12:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to Wiederöffnen einer Datei mit ifstream on Wed, 27 May 2009 13:49:02 GMT]]></title><description><![CDATA[<p>Hast du das <code>tellg</code> gleich nach dem erstellen des Inputstreams gesetzt? Also in deinem Code:</p>
<pre><code class="language-cpp">ifstream fus_datei(dateiname); // Und gleich danach:
std::cout &lt;&lt; fus_datei.tellg() &lt;&lt; std::enl;
</code></pre>
<p>Und das liefert dir dann <code>-1</code> ? Veränderst du in der Schleife etwas an <code>dateiname</code> ?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716766</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 27 May 2009 13:49:02 GMT</pubDate></item></channel></rss>