<?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 schlägt bei zweiten open fehl]]></title><description><![CDATA[<p>Ich hatte mir auf die Schnelle ein Script zusammengebastelt, welches einige Wörter aus einer Datei ausliest, in einen vector speichert und dann in eine andere Datei zurückschreibt.</p>
<p>Anstatt ifstream und ofstream hab ich nur fstream verwendet.<br />
mit fstream Objekt Datei öffnen, dann lesen und dann schließen. Das öffnen der neuen Datei schlägt fehl, obwohl diese angelegt wurde.</p>
<p>Ist das ein normales Verhalten bei fstream. Im Code springt er in den fail-Bereich. <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="😃"
    /> Das ist mir gänzlich neu. (verwende gcc (GCC) 3.4.5)</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
	fstream fileStream;
	vector&lt;string&gt; vStrings;
	string tmp;

	fileStream.open(&quot;test.ini&quot;, ios::in);

	while(!fileStream.eof())
	{
		getline(fileStream, tmp);
		vStrings.push_back(tmp);
	}

	fileStream.close();

	fileStream.open(&quot;foo.ini&quot;, ios::out|ios::app);

	if(fileStream.fail())
	{
		cerr &lt;&lt; &quot;???&quot; &lt;&lt; endl;
		return -1;
	}

	for(unsigned int i=0; i&lt;vStrings.size(); ++i)
		fileStream &lt;&lt; vStrings[i] &lt;&lt; endl;

	fileStream.close();

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/267587/fstream-schlägt-bei-zweiten-open-fehl</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 11:53:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267587.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 May 2010 20:41:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fstream schlägt bei zweiten open fehl on Wed, 26 May 2010 20:44:40 GMT]]></title><description><![CDATA[<p>Ich hatte mir auf die Schnelle ein Script zusammengebastelt, welches einige Wörter aus einer Datei ausliest, in einen vector speichert und dann in eine andere Datei zurückschreibt.</p>
<p>Anstatt ifstream und ofstream hab ich nur fstream verwendet.<br />
mit fstream Objekt Datei öffnen, dann lesen und dann schließen. Das öffnen der neuen Datei schlägt fehl, obwohl diese angelegt wurde.</p>
<p>Ist das ein normales Verhalten bei fstream. Im Code springt er in den fail-Bereich. <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="😃"
    /> Das ist mir gänzlich neu. (verwende gcc (GCC) 3.4.5)</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
	fstream fileStream;
	vector&lt;string&gt; vStrings;
	string tmp;

	fileStream.open(&quot;test.ini&quot;, ios::in);

	while(!fileStream.eof())
	{
		getline(fileStream, tmp);
		vStrings.push_back(tmp);
	}

	fileStream.close();

	fileStream.open(&quot;foo.ini&quot;, ios::out|ios::app);

	if(fileStream.fail())
	{
		cerr &lt;&lt; &quot;???&quot; &lt;&lt; endl;
		return -1;
	}

	for(unsigned int i=0; i&lt;vStrings.size(); ++i)
		fileStream &lt;&lt; vStrings[i] &lt;&lt; endl;

	fileStream.close();

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1902936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1902936</guid><dc:creator><![CDATA[BasicMan01]]></dc:creator><pubDate>Wed, 26 May 2010 20:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to fstream schlägt bei zweiten open fehl on Wed, 26 May 2010 21:03:11 GMT]]></title><description><![CDATA[<p>Ganz einfach:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
    fstream fileStream;
    vector&lt;string&gt; vStrings;
    string tmp;

    fileStream.open(&quot;test.ini&quot;, ios::in);

    while(!fileStream.eof())
    {
        getline(fileStream, tmp);
        vStrings.push_back(tmp);
    }

    fileStream.close();
    fileStream.clear(); // Hier das clear einfügen um Status auf OK zu setzten

    fileStream.open(&quot;foo.ini&quot;, ios::out|ios::app);

    if(fileStream.fail())
    {
        cerr &lt;&lt; &quot;???&quot; &lt;&lt; endl;
        return -1;
    }

    for(unsigned int i=0; i&lt;vStrings.size(); ++i)
        fileStream &lt;&lt; vStrings[i] &lt;&lt; endl;

    fileStream.close();

    return 0;
}
</code></pre>
<p>Du musst nach dem schließen, clear ausführen, damit die Statusflags zurückgesetzt werden( EOF wurde ja gesetzt) , der Status des Objektes wird also wieder auf OK gesetzt.<br />
Lässt du das clear weg, schlägt deßhalb das erneute Öffnen fehl.</p>
<p>Hoffe konnte dir helfen!</p>
<p>Gruß freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1902949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1902949</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Wed, 26 May 2010 21:03:11 GMT</pubDate></item><item><title><![CDATA[Reply to fstream schlägt bei zweiten open fehl on Wed, 26 May 2010 21:04:18 GMT]]></title><description><![CDATA[<p>genial <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="🙂"
    /> danke ... da hät ich ewig suchen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1902950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1902950</guid><dc:creator><![CDATA[BasicMan01]]></dc:creator><pubDate>Wed, 26 May 2010 21:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to fstream schlägt bei zweiten open fehl on Wed, 26 May 2010 21:51:54 GMT]]></title><description><![CDATA[<p>Kein Problem <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>
<p>Und gilt natürlich auf für ofstream und ifstream, also wenn du zum Beispiel ein ifstream Objekt hast und es mehrmals für verschiedene Dateien verwendest, dann immer nach dem close() ein clear() benutzen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">ifstream in( &quot;test.txt&quot;, ios::in );

// lese was aus test.txt

in.close();
in.clear(); // ganz wichtig auch hier immer ein clear() benutzen um den Status auf 
            // OK zu setzten.

in.open( &quot;test2.txt&quot; );

// lese was aus test2.txt

in.close();
</code></pre>
<p>Gruß freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1902980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1902980</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Wed, 26 May 2010 21:51:54 GMT</pubDate></item></channel></rss>