<?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[Datei wird nicht erzeugt]]></title><description><![CDATA[<p>Hallo,</p>
<p>dank des tollen Artikels auf der Main kenne ich jetzt die STL<br />
und sie hat mir wirklich geholfen <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>Nun habe ich allerdings ein kleines Problemchen.<br />
Ich habe eine Klasse <code>comment</code> geschrieben, alle Member funktionieren toll nur einer nicht:</p>
<pre><code class="language-cpp">void comment::create(void)
{
	source.close();
	strptr=new string;
	for (int i=0;i&lt;lines;i++)
	{
		cout &lt;&lt; filename.front() &lt;&lt; endl;
	fstream fout(filename.front().c_str());//(1)//Da filename eine &lt;string&gt; queue ist muss noch der c_str modus aktiviert werden

	while (!fout.eof())
		getline(fout, *strptr); //Das Ende der Datei erreichen
	//damit nicht schon vorhandene Kommis überschrieben werden
	fout &lt;&lt; content.front() &lt;&lt; &quot; - &quot;;
	cout &lt;&lt; &quot;Datei &lt;&quot; &lt;&lt; filename.front() &lt;&lt; &quot;&gt; enthaelt: &quot; &lt;&lt; content.front() &lt;&lt; endl;

	content.pop();
	filename.pop();
	fout.close();
	}
	delete strptr;
}
</code></pre>
<p>Die Queue <code>filename</code> enthält strings im folgenden Format:<br />
<code>[Laufwerksbuchstabe]:\[Dateiname].txt</code></p>
<p>Das Weglassen des Laufwerksbuchstabens, damit die Datei im Root-Verzeichnis angelegt wird, habe ich auch schon probiert - war nichts.<br />
Dann habe ich, dort wo die Dateien entstehen sollten, Dateien mit dem Dateinamen, der in der Queue stehen würde, erstellt.<br />
Nun wurde die Flag von <code>fout</code> nicht nullgesetzt, das heißt die Datei war offen. Ich wähnte mich als Gewinner, als die Funktion ihr Ass aus dem Ärmel zog:<br />
Die Datei wurde nicht beschrieben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Könnt Ihr mir weiterhelfen?</p>
<p>EDIT: Als ich einen festen Pfad in Zeile 8 anstelle des Pfades aus der Queue eingefügt habe, hat es funktioniert. Obwohl der von Hand eingegebene Pfad genau derselbe war wie der aus der Queue.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257142/datei-wird-nicht-erzeugt</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 07:44:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257142.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Dec 2009 16:39:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei wird nicht erzeugt on Wed, 23 Dec 2009 16:42:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>dank des tollen Artikels auf der Main kenne ich jetzt die STL<br />
und sie hat mir wirklich geholfen <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>Nun habe ich allerdings ein kleines Problemchen.<br />
Ich habe eine Klasse <code>comment</code> geschrieben, alle Member funktionieren toll nur einer nicht:</p>
<pre><code class="language-cpp">void comment::create(void)
{
	source.close();
	strptr=new string;
	for (int i=0;i&lt;lines;i++)
	{
		cout &lt;&lt; filename.front() &lt;&lt; endl;
	fstream fout(filename.front().c_str());//(1)//Da filename eine &lt;string&gt; queue ist muss noch der c_str modus aktiviert werden

	while (!fout.eof())
		getline(fout, *strptr); //Das Ende der Datei erreichen
	//damit nicht schon vorhandene Kommis überschrieben werden
	fout &lt;&lt; content.front() &lt;&lt; &quot; - &quot;;
	cout &lt;&lt; &quot;Datei &lt;&quot; &lt;&lt; filename.front() &lt;&lt; &quot;&gt; enthaelt: &quot; &lt;&lt; content.front() &lt;&lt; endl;

	content.pop();
	filename.pop();
	fout.close();
	}
	delete strptr;
}
</code></pre>
<p>Die Queue <code>filename</code> enthält strings im folgenden Format:<br />
<code>[Laufwerksbuchstabe]:\[Dateiname].txt</code></p>
<p>Das Weglassen des Laufwerksbuchstabens, damit die Datei im Root-Verzeichnis angelegt wird, habe ich auch schon probiert - war nichts.<br />
Dann habe ich, dort wo die Dateien entstehen sollten, Dateien mit dem Dateinamen, der in der Queue stehen würde, erstellt.<br />
Nun wurde die Flag von <code>fout</code> nicht nullgesetzt, das heißt die Datei war offen. Ich wähnte mich als Gewinner, als die Funktion ihr Ass aus dem Ärmel zog:<br />
Die Datei wurde nicht beschrieben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Könnt Ihr mir weiterhelfen?</p>
<p>EDIT: Als ich einen festen Pfad in Zeile 8 anstelle des Pfades aus der Queue eingefügt habe, hat es funktioniert. Obwohl der von Hand eingegebene Pfad genau derselbe war wie der aus der Queue.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826884</guid><dc:creator><![CDATA[n0stradamus]]></dc:creator><pubDate>Wed, 23 Dec 2009 16:42:25 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht erzeugt on Wed, 23 Dec 2009 19:01:30 GMT]]></title><description><![CDATA[<p>Das sieht zu kompliziert aus! Auch ist nicht klar, was die übrigen Funktionen deiner Klasse tun.<br />
- Für Dateinamen verwendet man besser nicht die String-Klasse string.<br />
- Normale char-strings sind hier vorteilhafter.<br />
- Die Datei-Funktionen sind zum Öffnen und Schliessen nur einmal notwendig.<br />
- Innerhalb der while-Schleife wird nur noch gelesen.<br />
- Auch für getline ist ein char-string übersichtlicher.<br />
Warte auf die Bescherung. Vielleicht bringt der Weihnachtsmann die etwa 20 Zeilen Sourcecode vorbei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826962</guid><dc:creator><![CDATA[knecht ruprecht]]></dc:creator><pubDate>Wed, 23 Dec 2009 19:01:30 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht erzeugt on Wed, 23 Dec 2009 19:04:48 GMT]]></title><description><![CDATA[<p>knecht ruprecht schrieb:</p>
<blockquote>
<p>- Für Dateinamen verwendet man besser nicht die String-Klasse string.<br />
- Normale char-strings sind hier vorteilhafter.<br />
- Auch für getline ist ein char-string übersichtlicher.</p>
</blockquote>
<p>Das musst du erklären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1826966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1826966</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 23 Dec 2009 19:04:48 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht erzeugt on Wed, 23 Dec 2009 23:03:20 GMT]]></title><description><![CDATA[<p>knecht ruprecht schrieb:</p>
<blockquote>
<p>Das sieht zu kompliziert aus! Auch ist nicht klar, was die übrigen Funktionen deiner Klasse tun.</p>
</blockquote>
<p>Ist ja für diese Funktion auch irrelevant, sie ruft sie ja nicht auf.<br />
Wären die 200 Zeilen Code lieber? <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>- Für Dateinamen verwendet man besser nicht die String-Klasse string.<br />
- Normale char-strings sind hier vorteilhafter.</p>
</blockquote>
<p>Die Größe des benötigten Speichers ist unbekannt, insofern bin ich mit std::string viel besser dran, ich habe einen dynamischen Speicher, keine 'Magic Numbers'<br />
mit <code>std::string.c_str()</code> spare ich mir auch das Gefrickel mit den char-Arrays</p>
<pre><code>- Die Datei-Funktionen sind zum Öffnen und Schliessen nur einmal notwendig.
- Innerhalb der while-Schleife wird nur noch gelesen.
- Auch für getline ist ein char-string übersichtlicher.
</code></pre>
<p>Das Öffnen ist durchaus mehrere Male notwendig, da immer eine neue Datei geöffnet wird, weil ja die Queue mit jedem Durchgang mit <code>.pop()</code> verkürzt wird. Das Lesen in der while-Schleife ist eine (zugegebenermaßen unschöne) Lösung um an das Ende der Datei zu kommen, steht auch im Kommentar.</p>
<blockquote>
<p>Warte auf die Bescherung. Vielleicht bringt der Weihnachtsmann die etwa 20 Zeilen Sourcecode vorbei.</p>
</blockquote>
<p>Toll, der Ratschlag bringt den Code jetzt zum Laufen :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1827064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1827064</guid><dc:creator><![CDATA[n0stradamus]]></dc:creator><pubDate>Wed, 23 Dec 2009 23:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht erzeugt on Sun, 27 Dec 2009 13:11:57 GMT]]></title><description><![CDATA[<p>String-Klasse oder Frickelei mit char-Strings? Das ist eine Sache der Anschauung und der Erfahrung. Viele ältere Programmierer sind bei der Frickelei geblieben, weil sie damit im Schlaf umgehen können - ich auch. Das Problem des Fragestellers liegt aber wohl woanders, was hier nicht völlig klar geworden ist. Es bleibt aber dabei, eine Datei muss zum Schreiben und Lesen jeweils geöffnet und geschlossen werden. Wie man den Dateinamen bereitstellt, die Datei schreibt und liest ist und bleibt Aufgabe des Programmierers. Es stimmt, der Weihnachtsmann kann da wenig helfen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828421</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Sun, 27 Dec 2009 13:11:57 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht erzeugt on Sun, 27 Dec 2009 13:44:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">fstream fout(filename.front().c_str());

	while (!fout.eof())
		getline(fout, *strptr); //Das Ende der Datei erreichen
	//damit nicht schon vorhandene Kommis überschrieben werden
</code></pre>
<p>Schau dir mal das an, vor allem openmode:<br />
<a href="http://cplusplus.com/reference/iostream/ofstream/ofstream/" rel="nofollow">http://cplusplus.com/reference/iostream/ofstream/ofstream/</a><br />
<a href="http://cplusplus.com/reference/iostream/ofstream/open/" rel="nofollow">http://cplusplus.com/reference/iostream/ofstream/open/</a><br />
Wird dir sicher gefallen <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>Außerdem würde ich strptr nicht auf dem Heap erstellen. Da reicht doch ein lokales (value)Objekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828445</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Sun, 27 Dec 2009 13:44:12 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht erzeugt on Mon, 28 Dec 2009 11:03:41 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<pre><code class="language-cpp">fstream fout(filename.front().c_str());
	
	while (!fout.eof())
		getline(fout, *strptr); //Das Ende der Datei erreichen
	//damit nicht schon vorhandene Kommis überschrieben werden
</code></pre>
<p>Schau dir mal das an, vor allem openmode:<br />
<a href="http://cplusplus.com/reference/iostream/ofstream/ofstream/" rel="nofollow">http://cplusplus.com/reference/iostream/ofstream/ofstream/</a><br />
<a href="http://cplusplus.com/reference/iostream/ofstream/open/" rel="nofollow">http://cplusplus.com/reference/iostream/ofstream/open/</a><br />
Wird dir sicher gefallen <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>Ist ja herrlich, ich beginne diese Datenbank zu lieben <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="🙂"
    /><br />
Weil ich nicht dahintergekommen bin, wie das Problem mit dem Dateierstellen zustande gekommen ist, schreibe ich das Programm gerade neu (mit einigen Verbesserungen^^)<br />
Wenn ich es habe, melde ich mich wieder.</p>
<blockquote>
<p>Außerdem würde ich strptr nicht auf dem Heap erstellen. Da reicht doch ein lokales (value)Objekt.</p>
</blockquote>
<p>Doofe Frage, warum? <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="🙂"
    /><br />
Was ich dazusagen sollte, <code>strptr</code> ist ein privater Member der Klasse. So wie ich ihn verwendet habe fungiert er an sich wie ein normaler string (man spricht ihn halt anders an). Oder ist das wieder unschön programmiert?<br />
In den Büchern steht halt so verdammt wenig über unschöne Sachen drin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ansonsten, vielen Dank für Eure Hilfe und einen guten Start ins Neue Jahr!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828800</guid><dc:creator><![CDATA[n0stradamus]]></dc:creator><pubDate>Mon, 28 Dec 2009 11:03:41 GMT</pubDate></item><item><title><![CDATA[Reply to Datei wird nicht erzeugt on Mon, 28 Dec 2009 11:36:56 GMT]]></title><description><![CDATA[<p>Da du den String ja nur innerhalb der Funktion verwendest, reicht es auch einfach</p>
<pre><code class="language-cpp">string str;
</code></pre>
<p>als lokale Variable anzulegen.<br />
Ein Klassenmember sollte sie nur sein, wenn du sie für mehrere Funktionen benötigst (und zwar bezogen auf den Inhalt - nicht wenn du in jeder Funktion einfach eine temporäre Variable benötigst!).</p>
<p>Zeiger sollte man ebenfalls nur verwenden, wenn man sie auch wirklich benötigt (d.h. z.B. wenn auch ein Nullwert erlaubt sein soll oder aber die Konstruktion und Destruktion in zwei verschiedenen Funktionen stattfindet).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828819</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 28 Dec 2009 11:36:56 GMT</pubDate></item></channel></rss>