<?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[ofstream]]></title><description><![CDATA[<p>Hallo zusammen,<br />
da ich bis jetzt noch gar nicht mit der Dateiverarbeitung auseinandergesetzt habe, beschäftige ich mich nun damit. Ich habe gelernt, dass ich so eine Datei anlegen kann:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;fstream&gt;
using namespace std; 

int main()
{
	ofstream test(&quot;test.txt&quot;);
	return 0; 
}
</code></pre>
<p>Hier wird eine Datei erstellt, aber noch nicht geöffnet. Angenommen, ich möchte nun 1000 Dateien erstellen, die einfach durchnummeriert sind. Wie stellt man sowas an? Muss ich jetzt 1000 Objekte der Klasse ofstream erzeugen oder geht das auch irgendwie kürzer, denn die Objekte müsste ich ja auch alle wieder zerstören?</p>
<p>das macht zwar keinen Sinn, aber ich möchte prinzipiell wissen, wie das geht.</p>
<p>Vielen Dank<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271094/ofstream</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 17:04:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271094.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Jul 2010 08:41:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 08:41:46 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
da ich bis jetzt noch gar nicht mit der Dateiverarbeitung auseinandergesetzt habe, beschäftige ich mich nun damit. Ich habe gelernt, dass ich so eine Datei anlegen kann:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;fstream&gt;
using namespace std; 

int main()
{
	ofstream test(&quot;test.txt&quot;);
	return 0; 
}
</code></pre>
<p>Hier wird eine Datei erstellt, aber noch nicht geöffnet. Angenommen, ich möchte nun 1000 Dateien erstellen, die einfach durchnummeriert sind. Wie stellt man sowas an? Muss ich jetzt 1000 Objekte der Klasse ofstream erzeugen oder geht das auch irgendwie kürzer, denn die Objekte müsste ich ja auch alle wieder zerstören?</p>
<p>das macht zwar keinen Sinn, aber ich möchte prinzipiell wissen, wie das geht.</p>
<p>Vielen Dank<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930421</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Fri, 23 Jul 2010 08:41:46 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 08:44:50 GMT]]></title><description><![CDATA[<p>std::ofstream hat auch open() und close().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930424</guid><dc:creator><![CDATA[Grautvornix]]></dc:creator><pubDate>Fri, 23 Jul 2010 08:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 08:47:59 GMT]]></title><description><![CDATA[<p>Doch, sie wird schon geöffnet, du kannst schon Daten hineinschreiben.<br />
Wenn du 1000 Dateien benötigt, dann musst du auch 1000 ofstream Objekte erzeugen. Warum sollten sich stream Klassen anders verhalten als andere Klassen?<br />
Unter Win32 gibt es übrigens eine fiese Stolperfalle, irgendwo ist eine Konstante FILE_MAX (oder so ähnlich) definiert, die festlegt, wieviele Dateien (egal ob fopen/fstream) gleichzeitig geöffnet sein dürfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930427</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 23 Jul 2010 08:47:59 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 08:53:02 GMT]]></title><description><![CDATA[<p>Ja, von dieser &quot;Falle&quot; habe ich gehört. Mmhh..ok. Dann werde ich mal weiterrumprobieren und dann höchstwahrscheinlich später weitere Fragen haben <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>
<p>Vielen Dank schonmal</p>
<p>lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930433</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Fri, 23 Jul 2010 08:53:02 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 08:53:59 GMT]]></title><description><![CDATA[<p>freakC++ schrieb:</p>
<blockquote>
<p>Hier wird eine Datei erstellt, aber noch nicht geöffnet.</p>
</blockquote>
<p>Wie kommst du auf den Unsinn? Das File wird erstellt <strong>und</strong> geöffnet.</p>
<p>freakC++ schrieb:</p>
<blockquote>
<p>Angenommen, ich möchte nun 1000 Dateien erstellen, die einfach durchnummeriert sind. Wie stellt man sowas an?</p>
</blockquote>
<p>Auf die ganz billige und langsame Art:</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; 1000; ++i)
{
  std::istringstream iss;
  iss &lt;&lt; &quot;name_&quot; &lt;&lt; i;
  std::ofstream out(iss.str().c_str());
}
</code></pre>
<p>freakC++ schrieb:</p>
<blockquote>
<p>... oder geht das auch irgendwie kürzer, denn die Objekte müsste ich ja auch alle wieder zerstören?</p>
</blockquote>
<p>Man könnte theoretisch den Stream wieder benutzen. Schliesslich gibt es Methoden für<a href="http://www.cplusplus.com/reference/iostream/ofstream/open/" rel="nofollow"> <code>open</code> </a>und<a href="http://www.cplusplus.com/reference/iostream/ofstream/close/" rel="nofollow"> <code>close</code> </a>. Viel wird es wahrscheinlich nicht bringen, schliesslich muss intern trotzdem immer wieder ein neuer <code>filebuf</code> erstellt und assoziert werden. Und auf dem Filesystem muss ständig ein File geöffnet und wieder geschlossen werden.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930435</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 23 Jul 2010 08:53:59 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 09:40:27 GMT]]></title><description><![CDATA[<p>Evtl. müsste man einen andere Weg einschlagen: eine leere Datei anlegen und diese tausendmal kopieren. Weil dann wird nichts geöffnet, außer der ersten Datei. Alles andere macht das OS. Natürlich muß man dann die nativen OS-Funktionen oder boost.filesystem dafür benutzen.</p>
<p>Was schneller und Resourcen-schonender ist, muß man natürlich messen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930476</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 23 Jul 2010 09:40:27 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 09:46:51 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for(int i = 0; i &lt; 1000; ++i)
{
  std::istringstream iss;
  iss &lt;&lt; &quot;name_&quot; &lt;&lt; i;
  std::ofstream out(iss.str().c_str());
}
</code></pre>
</blockquote>
<p>Was das ein Test? <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="🤡"
    /><br />
Muß natürlich ein ostringstream oss sein. <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="😃"
    /></p>
<p>Und wenn man drei Anschläge sparen will, man braucht keinen Namen bei</p>
<pre><code class="language-cpp">//std::ofstream out(oss.str().c_str());
std::ofstream(oss.str().c_str());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1930478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930478</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 23 Jul 2010 09:46:51 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 09:47:44 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ja ich habe da wohl erst was falsch verstanden. Die Datei wird also angelegt und geöffnet. Ich glaube, dass ich einfach damit rumspiele muss, da ich für die ganze Dateiverarbeitung unter C++ noch kein Gefühl habe. Das wird aber schon kommen <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>
<p>Vielen Dank<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930481</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Fri, 23 Jul 2010 09:47:44 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 09:53:08 GMT]]></title><description><![CDATA[<p>freakC++ schrieb:</p>
<blockquote>
<p>Hallo,<br />
ja ich habe da wohl erst was falsch verstanden. Die Datei wird also angelegt und geöffnet. Ich glaube, dass ich einfach damit rumspiele muss, da ich für die ganze Dateiverarbeitung unter C++ noch kein Gefühl habe. Das wird aber schon kommen <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>
<p>Vielen Dank<br />
lg, freakC++</p>
</blockquote>
<p>Verzichte generell auf open und close.<br />
open macht der Konstruktor und close macht der Destruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930483</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 23 Jul 2010 09:53:08 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 10:03:24 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Was das ein Test? <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="🤡"
    /><br />
Muß natürlich ein ostringstream oss sein. <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="😃"
    /></p>
</blockquote>
<p>Newbie-Codesicherung :p<br />
Oder einfach schnelles hingetippsel ohne grosse Kontrolle <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>
<p>volkard schrieb:</p>
<blockquote>
<p>Verzichte generell auf open und close.<br />
open macht der Konstruktor und close macht der Destruktor.</p>
</blockquote>
<p>Hier würde noch ein Stichwort sehr gut dazupassen: <a href="http://de.wikipedia.org/wiki/RAII" rel="nofollow">RA</a><a href="http://en.wikipedia.org/wiki/RAII" rel="nofollow">II</a>.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930485</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 23 Jul 2010 10:03:24 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 10:25:22 GMT]]></title><description><![CDATA[<p>Aus meiner Quelle habe ich aber gelernt, dass close() durchaus benutzt werden sollte, denn</p>
<p>1.) Es gehen keine Daten verloren, falls das Programm nicht normal beendet wird.</p>
<p>2.) Die Anzahl der Dateien, die in einem Programm geöffnet sein dürfen, sind begrenzt.</p>
<p>So argumentiert mein Büchlein <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>
<p>lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930494</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Fri, 23 Jul 2010 10:25:22 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 10:30:14 GMT]]></title><description><![CDATA[<p>freakC++ schrieb:</p>
<blockquote>
<p>Aus meiner Quelle habe ich aber gelernt, dass close() durchaus benutzt werden sollte, denn</p>
<p>1.) Es gehen keine Daten verloren, falls das Programm nicht normal beendet wird.</p>
</blockquote>
<p>Nutze bitte den Destruktor! Der wird auch bei Exceptions ausgeführt.</p>
<p>freakC++ schrieb:</p>
<blockquote>
<p>2.) Die Anzahl der Dateien, die in einem Programm geöffnet sein dürfen, sind begrenzt.</p>
</blockquote>
<p>Nutze bitte den Destruktor! Der wird auch bei Exceptions ausgeführt.</p>
<p>freakC++ schrieb:</p>
<blockquote>
<p>So argumentiert mein Büchlein <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>
</blockquote>
<p>Nutze bitte den Mülleimer! Uns sag den Namen für die Blacklist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930499</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 23 Jul 2010 10:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 10:54:25 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Unter Win32 gibt es übrigens eine fiese Stolperfalle, irgendwo ist eine Konstante FILE_MAX (oder so ähnlich) definiert, die festlegt, wieviele Dateien (egal ob fopen/fstream) gleichzeitig geöffnet sein dürfen.</p>
</blockquote>
<p>Ich komme nur bis 508 mit WinXP_32. Und ihr?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt;
using namespace std;

int main()
{
	for (int i = 0; ; ++i)
	{
		std::ostringstream oss;
		oss &lt;&lt; &quot;D:\\tmp\\&quot;&lt;&lt;&quot;name_&quot; &lt;&lt; i &lt;&lt; &quot;.tmp&quot;;
		std::ofstream* f=new std::ofstream(oss.str().c_str());
		if (!*f) return 1;
		cout&lt;&lt;i&lt;&lt;endl;
	}
}
</code></pre>
<p>edit: Hat sich erledigt. Ist nur eine Beschränkung der Laufzeitumgebung. Das Betriebssystem funktioniert anscheinend.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt;
#include &lt;windows.h&gt;
using namespace std;

int main()
{
	for (int i = 0; ; ++i)
	{
		std::ostringstream oss;
		oss &lt;&lt; &quot;D:\\tmp\\&quot;&lt;&lt;&quot;name_&quot; &lt;&lt; i &lt;&lt; &quot;.tmp&quot;;
		HANDLE f=CreateFile(oss.str().c_str(),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
		if (f==INVALID_HANDLE_VALUE) return 1;
		cout&lt;&lt;i&lt;&lt;endl;
	}
}
</code></pre>
<p>Geht bis 120033 bei mir.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930502</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 23 Jul 2010 10:54:25 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 10:49:31 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Verzichte generell auf open und close.<br />
open macht der Konstruktor und close macht der Destruktor.</p>
</blockquote>
<p>Warum soll er auf darauf verzichten? Erscheint mir mit open und close übersichtlicher und effizienter. Zwingt zum Nachdenken, wann brauche ich eine Datei und wann nicht mehr.</p>
<p>Hier der von mir favorisierte Weg:</p>
<pre><code class="language-cpp">#include &lt;fstream.h&gt;
#include &lt;iostream.h&gt;
#include &lt;iomanip.h&gt;
...
ofstream test;           // Stream anlegen
...
int     einInt = 10;
double  einDouble = 10.25;
...
test.open(&quot;Test.txt&quot;);  // Datei öffnen und einem Stream zuordnen 
...
// Manipulatoren setzen (z.B. für float und double)
...
test.setf(ios::fixed);
test.setf(ios::floatfield);
test.setf(ios::showpoint);
// Einträge in die Datei
test &lt;&lt; &quot;einInt     &quot; &lt;&lt; einInt &lt;&lt; endl;
test &lt;&lt; &quot;einDouble  &quot; &lt;&lt; setprecision(2) &lt;&lt; einDouble &lt;&lt; endl;
...
...
test.close();          // Datei schliessen sobald nicht mehr benötigt
</code></pre>
<p>Bei einer Mehrzahl von solchen Dateien muss man das auch mehrfach machen. Die Deklarationen ofstream .... sind wohl zwingend einzeln zu machen. Die open und close können auch über Schleifen mit verschiedenen Stream- und Dateinamen laufen, die man als Char-Strings zusammenbastelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930507</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Fri, 23 Jul 2010 10:49:31 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 10:53:41 GMT]]></title><description><![CDATA[<p>berniebutt schrieb:</p>
<blockquote>
<p>Hier der von mir favorisierte Weg:</p>
<pre><code class="language-cpp">#include &lt;fstream.h&gt;
#include &lt;iostream.h&gt;
#include &lt;iomanip.h&gt;
...
ofstream test;           // Stream anlegen
...
int     einInt = 10;
double  einDouble = 10.25;
...
test.open(&quot;Test.txt&quot;);  // Datei öffnen und einem Stream zuordnen 
...
// Manipulatoren setzen (z.B. für float und double)
...
test.setf(ios::fixed);
test.setf(ios::floatfield);
test.setf(ios::showpoint);
// Einträge in die Datei
test &lt;&lt; &quot;einInt     &quot; &lt;&lt; einInt &lt;&lt; endl;
test &lt;&lt; &quot;einDouble  &quot; &lt;&lt; setprecision(2) &lt;&lt; einDouble &lt;&lt; endl;
...
...
test.close();          // Datei schliessen sobald nicht mehr benötigt
</code></pre>
</blockquote>
<p>Und hier meiner:</p>
<pre><code class="language-cpp">#include &lt;fstream.h&gt;
#include &lt;iostream.h&gt;
#include &lt;iomanip.h&gt;
...
int     einInt = 10;
double  einDouble = 10.25;
...
{//&lt;&lt;-- Guchst Du hier
  ofstream test(&quot;Test.txt&quot;);  // Stream anlegen und Datei öffnen und einem Stream zuordnen 
  ...
  // Manipulatoren setzen (z.B. für float und double)
  ...
  test.setf(ios::fixed);
  test.setf(ios::floatfield);
  test.setf(ios::showpoint);
  // Einträge in die Datei
  test &lt;&lt; &quot;einInt     &quot; &lt;&lt; einInt &lt;&lt; endl;
  test &lt;&lt; &quot;einDouble  &quot; &lt;&lt; setprecision(2) &lt;&lt; einDouble &lt;&lt; endl;
  ...
  ...
  // automatisch Datei schliessen sobald nicht mehr benötigt
}//&lt;&lt;-- Und hier
</code></pre>
<p>berniebutt schrieb:</p>
<blockquote>
<p>Bei einer Mehrzahl von solchen Dateien muss man das auch mehrfach machen. Die Deklarationen ofstream .... sind wohl zwingend einzeln zu machen. Die open und close können auch über Schleifen mit verschiedenen Stream- und Dateinamen laufen, die man als Char-Strings zusammenbastelt.</p>
</blockquote>
<p>Ich sehe keine Mehrzahl von Datei-Objekten. Legst Du die ostreams-Objekte außerhalb der Schleife an brauchst deswegen close? Mach sie doch lokaler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930512</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 23 Jul 2010 10:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 11:06:48 GMT]]></title><description><![CDATA[<p>berniebutt schrieb:</p>
<blockquote>
<p>Warum soll er auf darauf verzichten?</p>
</blockquote>
<p>Exceptions.</p>
<blockquote>
<p>Erscheint mir mit open und close übersichtlicher</p>
</blockquote>
<p>Es ist also übersichtlicher, zuerst ein Dummy-Objekt zu erstellen und dann erst die gewünschte Datei zu öffnen?</p>
<blockquote>
<p>und effizienter.</p>
</blockquote>
<p>Es ist also effizienter, zuerst ein Dummy-Objekt zu erstellen und dann erst die gewünschte Datei zu öffnen?</p>
<blockquote>
<p>Zwingt zum Nachdenken, wann brauche ich eine Datei und wann nicht mehr.</p>
</blockquote>
<p>Ich lege genau dann mein fstream-Objekt an, wenn ich die Datei brauche. Also überlege ich wohl mehr, wann ich das Objekt brauche, als du, wenn du es einfach irgendwann mal vorher anlegst.</p>
<blockquote>
<p>Die Deklarationen ofstream .... sind wohl zwingend einzeln zu machen. Die open und close können auch über Schleifen mit verschiedenen Stream- und Dateinamen laufen, die man als Char-Strings zusammenbastelt.</p>
</blockquote>
<p>Versteh ich nicht. Was soll mich daran hindern, ofstream-Objekte in einer Schleife zu erzeugen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930523</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 23 Jul 2010 11:06:48 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 11:35:25 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a> &amp; Michael.E<br />
Ich sehe da keinen oder wenig Widerspruch in unseren Aussagen. Objekte legt man an wenn man sie braucht und gibt sie frei wenn man sie nicht mehr braucht. Dies bei einer Vielzahl der Stream-Objekte als Code-Beispiel zu zeigen ist nicht möglich oder verwirrt den Fragesteller. Wir wollen doch uns nicht gegenseitig überzeugen, sondern dem Fragesteller eine Hilfe geben. Nachdenken und machen soll er selbst! <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/1930553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930553</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Fri, 23 Jul 2010 11:35:25 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 11:47:15 GMT]]></title><description><![CDATA[<p>berniebutt schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a> &amp; Michael.E<br />
Ich sehe da keinen oder wenig Widerspruch in unseren Aussagen. Objekte legt man an wenn man sie braucht und gibt sie frei wenn man sie nicht mehr braucht. Dies bei einer Vielzahl der Stream-Objekte als Code-Beispiel zu zeigen ist nicht möglich oder verwirrt den Fragesteller. Wir wollen doch uns nicht gegenseitig überzeugen, sondern dem Fragesteller eine Hilfe geben. Nachdenken und machen soll er selbst! <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>
</blockquote>
<p>An open und close erkennt man schlechten Code und schlechte Bücher.<br />
Fertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930563</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 23 Jul 2010 11:47:15 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 11:56:07 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>An open und close erkennt man schlechten Code und schlechte Bücher. Fertig.</p>
</blockquote>
<p>Ein schlechter Code ist nur jener, der ein Programm zum Absturz bringt, instabil macht, oder unnötig Ressourcen (Laufzeit, Speicher) beansprucht.<br />
daddeldu - ich habe fertig! :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930572</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Fri, 23 Jul 2010 11:56:07 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 12:20:40 GMT]]></title><description><![CDATA[<p>berniebutt schrieb:</p>
<blockquote>
<p>Ich sehe da keinen oder wenig Widerspruch in unseren Aussagen.</p>
</blockquote>
<p>Ähh, doch. Du willst open und close benutzen und volkard und ich wollen das nicht. Reicht das nicht?</p>
<blockquote>
<p>Objekte legt man an wenn man sie braucht und gibt sie frei wenn man sie nicht mehr braucht.</p>
</blockquote>
<p>Machst du anscheinend nicht.</p>
<blockquote>
<p>Wir wollen doch uns nicht gegenseitig überzeugen,</p>
</blockquote>
<p>Doch.</p>
<blockquote>
<p>sondern dem Fragesteller eine Hilfe geben.</p>
</blockquote>
<p>Das geschieht dann automatisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930600</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 23 Jul 2010 12:20:40 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 13:04:49 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
nachdem eigentlich alles erfolgreich funktioniert hat, stehe ich nun vor einem Problem. Ich möchte, dass der Benutzer einen Dateipfad mit dem Dateinamen und der Endung eingibt und daraufhin die entsprechende Datei erstellt wird.</p>
<p>Wenn ich im Quelltext den ganzen Pfad eingebe, dann funktioniert es, doch sobald der Benutzer über die Konsole den Pfad eingibt, funktioniert nichts mehr. Könnt ihr mir sagen warum?</p>
<p>Hier ist der Quelltext:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;string&gt;
#include &lt;fstream&gt;
using namespace std; 

void getDir(string&amp; fl1, string&amp; fl2, string&amp; of1) //Liest Dateipfade aus
{
	string dirf1, dirf2, diro1;
	cout &lt;&lt; &quot;Bitte geben Sie den Pfad der ersten Datei an!\n&quot;
		 &lt;&lt; endl;
	getline(cin, dirf1);

	cout &lt;&lt; &quot;Bitte geben Sie den Pfad der zweiten Datei an!\n&quot; 
         &lt;&lt; endl;
	getline(cin, dirf2);

	cout &lt;&lt; &quot;Bitte geben Sie das Zielverzeichnis mit Dateinamen an!\n&quot; 
         &lt;&lt; endl;
	getline(cin, of1);
	if(dirf1 == dirf2)
		cout &lt;&lt; &quot;Sie muessen zwei verschiedenen Dateien angeben!&quot; &lt;&lt; endl;
	else
	{
		fl1 = dirf1;
		fl2 = dirf2;
	}

}

int main()
{
	string inFile1, inFile2, outFile;
	getDir(inFile1, inFile2, outFile);
	//ifstream inf1(inFile1.c_str()),
	//		 inf2(inFile2.c_str());

	ofstream outf(outFile.c_str()); //Datei wird nicht angelegt. Die untere if - Bedingung ist true

	cout &lt;&lt; outFile &lt;&lt; endl; //Der Pfad stimt. Wenn ich ihn direkt in den Konstruktor von outf eingebe, dann funktioniert alles
	if(/*!inf1|| !inf2 ||*/ !outf)
	{
		cout &lt;&lt; &quot;Fehler beim Oeffnen/Schreiben der Dateien&quot; &lt;&lt; endl;
		return 0;
	}

	return 0;
}
</code></pre>
<p>Wisst ihr, wo der Fehler lieg?</p>
<p>Vielen Dank<br />
lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930668</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Fri, 23 Jul 2010 13:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 13:14:52 GMT]]></title><description><![CDATA[<p>Der Pfad stimmt nicht. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1930682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930682</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 23 Jul 2010 13:14:52 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 13:24:34 GMT]]></title><description><![CDATA[<p>doch. Ich gebe ihn ja aus und er ist korrekt!</p>
<p>Kann es sein, dass .c_str() da was verfälscht?</p>
<p>lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930689</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Fri, 23 Jul 2010 13:24:34 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 13:23:09 GMT]]></title><description><![CDATA[<p>Poste mal, wie der Pfad aussieht, wenn Du in direkt angibst, und wie er aussieht, wenn Du ihn per <code>std::cin</code> übergibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930692</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 23 Jul 2010 13:23:09 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 13:28:32 GMT]]></title><description><![CDATA[<p>So gebe ich ih in den Quelltext ein:<br />
C:\\Dokumente und Einstellungen\\freakC++\\Desktop\\Test4.txt</p>
<p>So in die Konsole:<br />
C:\Dokumente und Einstellungen\freakC++\Desktop\Test4.txt</p>
<p>Ich hab ersteren auch mal in die konsole eingegeben. Bringt nichts. Ich habe .c_str() im Verdacht?!</p>
<p>lg, freakC++</p>
<p>edit: .c_str() behält doch Leerzeichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930697</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Fri, 23 Jul 2010 13:28:32 GMT</pubDate></item><item><title><![CDATA[Reply to ofstream on Fri, 23 Jul 2010 13:30:47 GMT]]></title><description><![CDATA[<p>Was für einen Compiler in was für einer Version benutzt Du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930700</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 23 Jul 2010 13:30:47 GMT</pubDate></item></channel></rss>