<?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[Schreiben von Strings in Datei]]></title><description><![CDATA[<p>Hallo, ich möchte viele verschiedene Informationen (Strings) in eine Datei schreiben. Während der Ausführung des Programms können ständig neue solche Informationen hinzukommen.<br />
Ist es nun klüger:</p>
<p>a) immer, wenn ein solcher neuer String vorliegt, das Dokument zu öffnen, den String hineinzuschreiben und das Dokument wieder zu schließen</p>
<p>oder</p>
<p>b) einen großen langen String zu erzeugen, der erst am Ende der Ausführung des Programms als ganzes in das Dokument geschrieben wird</p>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/125412/schreiben-von-strings-in-datei</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 08:46:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/125412.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Nov 2005 14:26:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Sun, 06 Nov 2005 14:26:06 GMT]]></title><description><![CDATA[<p>Hallo, ich möchte viele verschiedene Informationen (Strings) in eine Datei schreiben. Während der Ausführung des Programms können ständig neue solche Informationen hinzukommen.<br />
Ist es nun klüger:</p>
<p>a) immer, wenn ein solcher neuer String vorliegt, das Dokument zu öffnen, den String hineinzuschreiben und das Dokument wieder zu schließen</p>
<p>oder</p>
<p>b) einen großen langen String zu erzeugen, der erst am Ende der Ausführung des Programms als ganzes in das Dokument geschrieben wird</p>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/909535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/909535</guid><dc:creator><![CDATA[MatthiasK]]></dc:creator><pubDate>Sun, 06 Nov 2005 14:26:06 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Sun, 06 Nov 2005 14:34:10 GMT]]></title><description><![CDATA[<p>Die einfache Variante:</p>
<pre><code class="language-cpp">#include &lt;cstdio&gt;

void main()
{
   FILE *pFile = fopen(&quot;Filename.txt&quot;, &quot;a+&quot;);
   char* string = &quot;Hello World!!!&quot;;
   fprintf(&quot;%s&quot;, string);
   string = (char*) &quot;Hallo Welt&quot;;
   fprintf(&quot;%s&quot;, string);
   fclose(pFile);
}
</code></pre>
<p>Du solltest das Dokument eventuell statisch o. Global verwalten, den öffnen und schließen ist mit erheblichen Zeitaufwand verbunden.</p>
<p>Falls du ne Klasse hast:<br />
Im Konstruktor öffnen und im Destruktur schließen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/909539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/909539</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Sun, 06 Nov 2005 14:34:10 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Sun, 06 Nov 2005 14:46:07 GMT]]></title><description><![CDATA[<p>Also bitte, dies ist das C++ Forum, also bitte auch C++ Code.</p>
<p>1. cstdio.h gibt es nicht, entweder stdio.h (C) oder cstdio (C++, aber eigentlich gar nicht)<br />
2. void main () ist weder gültiges C noch gültiges C++<br />
3. std::strings (die gar nicht inkludiert sind) haben einen Konstruktor für char*-Strings, der (C-)Cast ist unnötig.<br />
4. In C++ benutzt man für so etwas Streams</p>
<p>Ich weiß, dass es nur ein Beispiel war, aber ein wenig sorgfältiger gehts schon</p>
<p>Zur eigentlichen Frage:<br />
Je nachdem, wie das Programm aufgebaut ist, halte ich es für sinnvoll, die ganzen Strings, die da auflaufen an eine Liste dranzuhängen und dann am Ende in eine Datei zu schreiben. Immer wieder öffnen oder offen halten ist nicht so Wahre.<br />
Dem Destruktor Ansatz stimme ich aber zu.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;list&gt;

class Strings
{
public:
    typedef std::list&lt;std::string&gt; ListType;

    Strings (std::string Name) : mName (Name) {}

    void push (std::string s) { mList.push_back (s); }
    void push (char* s) { push (std::string (s)); }

    ~Strings ()
    {
        std::ofstream File (Name.c_str ());
        for (ListType::iterator i = mList.begin (); i != mList.end (); ++i)
            File &lt;&lt; *i &lt;&lt; std::endl;
    }
private:
    ListType mList;
    const std::string mName;
};
</code></pre>
<p>So würds ich glaub ich machen. Strings sollte man dann noch zum Singleton machen, so würds am Anfang gebaut und am Ende zerstört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/909554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/909554</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 06 Nov 2005 14:46:07 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Sun, 06 Nov 2005 14:49:35 GMT]]></title><description><![CDATA[<p>In C++ gibts nur eine &quot;wahre&quot; Variante:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;string&gt;

int main() 
{
    std::ofstream file(&quot;file.tmp&quot;);
    // hier fehlerüberprüfung!
    std::string text(&quot;hello world&quot;);
    file &lt;&lt; text;
}
</code></pre>
<p>Sieht irgendwie auch einfacher aus als das obere.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/909558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/909558</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Sun, 06 Nov 2005 14:49:35 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Sun, 06 Nov 2005 15:44:31 GMT]]></title><description><![CDATA[<p>Es ist ja auch die &quot;echte&quot; C++ variante.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/909615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/909615</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Sun, 06 Nov 2005 15:44:31 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Mon, 07 Nov 2005 15:16:48 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<p>In C++ gibts nur eine &quot;wahre&quot; Variante:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;string&gt;

int main() 
{
    std::ofstream file(&quot;file.tmp&quot;);
    // hier fehlerüberprüfung!
    std::string text(&quot;hello world&quot;);
    file &lt;&lt; text;
}
</code></pre>
<p>Sieht irgendwie auch einfacher aus als das obere.</p>
<p>Gruß</p>
</blockquote>
<p>So klappt es sehr gut, aber muss ich die Datei nicht noch irgendwie schließen?<br />
Dazu habe ich noch eine Frage. Das obige Programm funktioniert ja sehr gut, aber wieso geht das Folgende nicht auch?</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;string&gt;

int main() 
{

    std::string filename(&quot;name.txt&quot;);
    std::ofstream file(filename);
    std::string text(&quot;hello world&quot;);
    file &lt;&lt; text;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/910669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910669</guid><dc:creator><![CDATA[MatthiasK]]></dc:creator><pubDate>Mon, 07 Nov 2005 15:16:48 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Mon, 07 Nov 2005 15:20:56 GMT]]></title><description><![CDATA[<blockquote>
<p>So klappt es sehr gut, aber muss ich die Datei nicht noch irgendwie schließen?</p>
</blockquote>
<p>Das macht der Stream selber im Destruktor.</p>
<blockquote>
<p>Dazu habe ich noch eine Frage. Das obige Programm funktioniert ja sehr gut, aber wieso geht das Folgende nicht auch?</p>
</blockquote>
<p>weil (warum auch immer) der fstream einen char* als Dateinamen erwartet und keinen String:</p>
<pre><code class="language-cpp">std::ofstream file(filename.c_str());
</code></pre>
<p>ist die Antwort dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/910673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910673</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 07 Nov 2005 15:20:56 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Mon, 07 Nov 2005 15:28:44 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;list&gt;

class Strings
{
public:
    typedef std::list&lt;std::string&gt; ListType;

    Strings (std::string Name) : mName (Name) {}

    void push (std::string s) { mList.push_back (s); }
    void push (char* s) { push (std::string (s)); }

    ~Strings ()
    {
        std::ofstream File (Name.c_str ());
        for (ListType::iterator i = mList.begin (); i != mList.end (); ++i)
            File &lt;&lt; *i &lt;&lt; std::endl;
    }
private:
    ListType mList;
    const std::string mName;
};
</code></pre>
</blockquote>
<p>Ohhhh <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Ich weiß nicht aber irgendwie finde ich den Code richtig schöööön <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="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Was ist ein Singleton, das hört man ja auch öfters <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/910691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910691</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 07 Nov 2005 15:28:44 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Mon, 07 Nov 2005 16:35:44 GMT]]></title><description><![CDATA[<p>Bzg. dem Code: Was ich nicht ganz nachvollziehen kann, ist, dass keine Referenzen zum Zuge kommen. Außerdem: warum wird für char* und std::string überladen? ...</p>
<p>Bzg. Singleton: <a href="http://de.wikipedia.org/wiki/Singleton" rel="nofollow">http://de.wikipedia.org/wiki/Singleton</a>.</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/910761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910761</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Mon, 07 Nov 2005 16:35:44 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Strings in Datei on Mon, 07 Nov 2005 17:59:55 GMT]]></title><description><![CDATA[<p>Das mit den Referenzen stimmt, kleine Unachtsamkeit <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="🙂"
    /> . Für char* hab ich überladen, weil ich mir nicht ganz sicher war, ob normale String-Literale ( &quot;blabla&quot; ) sonst auch genommen werden.</p>
<p>EDIT: Naja, und selbst dann wärs const char*, ist also Quatsch.</p>
<p>BTW, auf &quot;Bezüglich&quot; folgt ein Genitiv <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/910767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910767</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 07 Nov 2005 17:59:55 GMT</pubDate></item></channel></rss>