<?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[Eine Strucktur mit fstreams speichern]]></title><description><![CDATA[<p>Hallo,<br />
ich hab mal eine Frage auf die ich bis jetzt keine richtige Antwort gefunden habe.<br />
Und zwar:<br />
Kann man, und wenn ja wie, Struckturen mit fstream in einer Datei speichern?<br />
(Ausdrücklich ohne FILE*)</p>
<p>Ein Beispielcode oder Prototyp wäre auch schön.<br />
Danke schon mal an alle die sich den Kopf zerbrechen <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/topic/232768/eine-strucktur-mit-fstreams-speichern</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 02:44:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232768.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jan 2009 22:26:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Mon, 26 Jan 2009 22:26:07 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich hab mal eine Frage auf die ich bis jetzt keine richtige Antwort gefunden habe.<br />
Und zwar:<br />
Kann man, und wenn ja wie, Struckturen mit fstream in einer Datei speichern?<br />
(Ausdrücklich ohne FILE*)</p>
<p>Ein Beispielcode oder Prototyp wäre auch schön.<br />
Danke schon mal an alle die sich den Kopf zerbrechen <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/1652924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652924</guid><dc:creator><![CDATA[guest brain]]></dc:creator><pubDate>Mon, 26 Jan 2009 22:26:07 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Tue, 27 Jan 2009 00:07:37 GMT]]></title><description><![CDATA[<p>Wenn man es nicht binär macht, muss man halt memberweise ein- oder auslesen.</p>
<pre><code class="language-cpp">struct MyStruct
{
   int Count;
   double Decimal;
};
</code></pre>
<pre><code class="language-cpp">MyStruct Var;

std::ofstream Out(&quot;file.txt&quot;);
Out &lt;&lt; Var.Count &lt;&lt; &quot; &quot; &lt;&lt; Var.Decimal &lt;&lt; std::endl;

std::ifstream In(&quot;file.txt&quot;);
In &gt;&gt; Var.Count &gt;&gt; Var.Decimal &gt;&gt; Var.Address;
</code></pre>
<p>Das Ganze kann man natürlich noch ausbauen, indem man z.B. <code>std::getline()</code> verwendet. Oder man überlädt gleich die Streamoperatoren für die Struktur.</p>
<p>Auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> findest du mehr Infos zu <code>std::fstream</code> , da sollte sich auch einiges klären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652965</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 27 Jan 2009 00:07:37 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Tue, 27 Jan 2009 16:32:53 GMT]]></title><description><![CDATA[<p>Soll das heißen das Folgendes nicht funktioniert?</p>
<p>#include &lt;fstream&gt;</p>
<p>struct bsp<br />
{<br />
char name[20];<br />
int alter;<br />
};</p>
<p>void main()<br />
{<br />
fstream datei;<br />
bsp obj;</p>
<p>datei.open(ios_base::app | ios_base::binary);</p>
<p>datei&lt;&lt;obj&lt;&lt;endl;</p>
<p>datei.close();</p>
<p>}</p>
<p>Gibt es nicht so was wie eine OOP Variante von fread() und fwrite()? <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/1653326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653326</guid><dc:creator><![CDATA[guest brain]]></dc:creator><pubDate>Tue, 27 Jan 2009 16:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Tue, 27 Jan 2009 16:45:25 GMT]]></title><description><![CDATA[<p>Öhm nein.Das ist nicht wie in C# mit der XML-Serialisierung, hier muss man alles von Hand machen was auch meines Erachtens logisch ist.Weil woher soll der Compiler wissen, was wie geschrieben wird?;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653335</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Tue, 27 Jan 2009 16:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Tue, 27 Jan 2009 16:53:06 GMT]]></title><description><![CDATA[<p>guest brain schrieb:</p>
<blockquote>
<p>datei&lt;&lt;obj&lt;&lt;endl;</p>
<p>Gibt es nicht so was wie eine OOP Variante von fread() und fwrite()? <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>
</blockquote>
<p>Im Prinzip schon. Nur das Format bleibt dem User (also Dir überlassen) - dafür schreibt man Code wie diesen:</p>
<pre><code class="language-cpp">struct bsp
{
    std::string name; // erfordert #include &lt;string&gt;
    int alter;
};
// bsp - Objekt ausgeben (erfordert #include &lt;iostream&gt;)
std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const bsp&amp; x ) 
{
    return out &lt;&lt; x.name &lt;&lt; &quot; &quot; &lt;&lt; x.alter;
}
</code></pre>
<p>dann wird Dein oben vorgesehener Aufruf möglich. Das Einlesen geht entsprechend mit std::istream&amp; operator&gt;&gt;( ..</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653341</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 27 Jan 2009 16:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Tue, 27 Jan 2009 17:28:57 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Öhm nein.Das ist nicht wie in C# mit der XML-Serialisierung, hier muss man alles von Hand machen was auch meines Erachtens logisch ist.Weil woher soll der Compiler wissen, was wie geschrieben wird?;)</p>
</blockquote>
<p>Keine Ahnung woher der das wissen soll aber bei fwrite() weiß er's doch auch.</p>
<p>Wegen dem letzten BspCode, an der return Zeile meckert mein Kompiler</p>
<pre><code class="language-cpp">ofstream&amp; operator&lt;&lt;(ofstream&amp; out, const bsp&amp; x )
{
 return out&lt;&lt;x.name&lt;&lt;&quot; &quot;&lt;&lt;x.alter;
}
</code></pre>
<p>Fehlermeldung:<br />
43 D:\test\operatoren.cpp invalid initialization of reference of type 'std::ofstream&amp;' from expression of type 'std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;'</p>
<p>Kann mir mal jemand das decodieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653367</guid><dc:creator><![CDATA[guest brain]]></dc:creator><pubDate>Tue, 27 Jan 2009 17:28:57 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Tue, 27 Jan 2009 17:35:58 GMT]]></title><description><![CDATA[<p>guest brain schrieb:</p>
<blockquote>
<pre><code class="language-cpp">ofstream&amp; operator&lt;&lt;(ofstream&amp; out, const bsp&amp; x )
{
 return out&lt;&lt;x.name&lt;&lt;&quot; &quot;&lt;&lt;x.alter;
}
</code></pre>
<p>Fehlermeldung:<br />
43 D:\test\operatoren.cpp invalid initialization of reference of type 'std::ofstream&amp;' from expression of type 'std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;'</p>
<p>Kann mir mal jemand das decodieren?</p>
</blockquote>
<p>Ja - die Kunst besteht im richtigen Abschreiben - im meinem Posting steht kein 'f' zwischen 'o' und 'stream' <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="😉"
    /><br />
Der Compiler teilt dir mit, dass er aus einem ostream keinen ofstream machen kann - was völlig ok ist.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653373</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 27 Jan 2009 17:35:58 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Wed, 28 Jan 2009 01:55:37 GMT]]></title><description><![CDATA[<p>Ups da hab ich wohl nen fehler gemacht. <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="😃"
    /> Danke. Geht das auch mit fstream?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653600</guid><dc:creator><![CDATA[guest brain]]></dc:creator><pubDate>Wed, 28 Jan 2009 01:55:37 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Wed, 28 Jan 2009 02:28:28 GMT]]></title><description><![CDATA[<p>...und wenn ich es richtig lese ist die Klasse ostream protected. <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="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653605</guid><dc:creator><![CDATA[guest brain]]></dc:creator><pubDate>Wed, 28 Jan 2009 02:28:28 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Wed, 28 Jan 2009 07:53:23 GMT]]></title><description><![CDATA[<p>guest brain schrieb:</p>
<blockquote>
<p>Ups da hab ich wohl nen fehler gemacht. <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="😃"
    /> Danke. Geht das auch mit fstream?</p>
</blockquote>
<p>was soll mit fstream gehen ? ein Ausgabeoperator mit ofstream macht keinen Sinn ..</p>
<p>guest brain schrieb:</p>
<blockquote>
<p>...und wenn ich es richtig lese ist die Klasse ostream protected. <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="😮"
    /></p>
</blockquote>
<p>Nein - die Klasse ist nicht protected - wo liest man das?</p>
<p>Nimm einfach Dein Programm von oben - lass einiges überflüssiges weg, füge den Ausgabeoperator, den ich Dir geschrieben habe, hinzu und Du bekommst:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

struct bsp
{
    // ein Konstruktor wäre hier noch sinnvoll
    std::string name; // erfordert #include &lt;string&gt;
    int alter;
};
// bsp - Objekt ausgeben (erfordert #include &lt;iostream&gt;)
std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const bsp&amp; x )
{
    return out &lt;&lt; x.name &lt;&lt; &quot; &quot; &lt;&lt; x.alter;
} 

int main()
{
    using namespace std;
    ofstream datei( &quot;output.txt&quot; );
    bsp obj;
    datei&lt;&lt;obj&lt;&lt;endl;
    return  0;
}
</code></pre>
<p>.. und baue Dir noch einen Konstruktor für die struct.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653645</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 28 Jan 2009 07:53:23 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Thu, 29 Jan 2009 18:34:16 GMT]]></title><description><![CDATA[<p>Das ist der Fehler den Dev-C++ aus gibt:</p>
<p>361 C:\Dev-Cpp\include\c++\3.4.2\ostream `std::basic_ostream&lt;_CharT, _Traits&gt;::basic_ostream() [with _CharT = char, _Traits = std::char_traits&lt;char&gt;]' is protected &lt;-- Da steht protected</p>
<p>Und am liebsten würde ich es gern so machen damit ich nicht einen Stream für eingabe und einen für ausgabe definieren muss, daher fstream:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

int main()
{
    fstream datei;
    char text[51];

    cout&lt;&lt;&quot;Bitte Text eingeben: &quot;&lt;&lt;endl;
    cin.get(text, 50);

    datei.open( &quot;t.txt&quot;, ios_base::out | ios_base::app | ios_base::binary );

    datei&lt;&lt;text;

    datei.close();

    system(&quot;cls&quot;);

    datei.open(&quot;t.txt&quot;,ios_base::in);

    for(int i = 0; !datei.eof(); i++)
    {
            if( i&gt;50 )
            {
                text[51] = '\0';
                break;}

    datei.get(text[i]);
    }

    cout&lt;&lt;text&lt;&lt;endl;;

        system(&quot;PAUSE&quot;);
    return 0;
    }
</code></pre>
<p>Und wie in Zeile 16 würde ich das gerne mit einer Strucktur machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1654556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1654556</guid><dc:creator><![CDATA[guest brain]]></dc:creator><pubDate>Thu, 29 Jan 2009 18:34:16 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Thu, 29 Jan 2009 19:01:14 GMT]]></title><description><![CDATA[<p>Was gefällt dir denn an den überladenen Operatoren nicht?<br />
Bezüglich deines compilers würde ich dir raten mal einen neueren zu nehmen. Dev-C++ ist schon sehr alt und wird auch nicht mehr weiter entwickelt.<br />
CodeBlocks mit MinGw ist hier eine gute Alternative (siehe FAQ).<br />
Wenn du binär schreiben und lesen willst sind die operatoren &lt;&lt; und &gt;&gt; aber eh fehl am Platz. Dafür gibt es dann die Stream-Memberfunktionen read und write.<br />
Bei einer Klasse wäre es gut gleichlautende Memberfunktionen zu implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1654572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1654572</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 29 Jan 2009 19:01:14 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Thu, 29 Jan 2009 20:49:20 GMT]]></title><description><![CDATA[<p>Kann vll endlich ma jmd den Thread-Titel ändern? <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=":/"
      alt="😕"
    /></p>
<p>egal in was - Hauptsache, das Stru <code>c</code> ktur kommt weg ^^</p>
<p>danke + bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1654647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1654647</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 29 Jan 2009 20:49:20 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Strucktur mit fstreams speichern on Fri, 30 Jan 2009 21:14:24 GMT]]></title><description><![CDATA[<p>guest brain schrieb:</p>
<blockquote>
<p>Das ist der Fehler den Dev-C++ aus gibt:</p>
<p>361 C:\Dev-Cpp\include\c++\3.4.2\ostream `std::basic_ostream&lt;_CharT, _Traits&gt;::basic_ostream() [with _CharT = char, _Traits = std::char_traits&lt;char&gt;]' is protected &lt;-- Da steht protected</p>
</blockquote>
<p>Dort (in Zeile 361 ?) wird versucht den Defaultkonstruktor von std::ostream aufzugerufen - den gibt es aber im C++-Standard gar nicht!? In dem Code, den ich gepostet habe, passiert das nirgendwo, also hat dieser Code, der den Compiler-Feher auslöst, nichts mit dem zu tun, was hier gepostet wurde !?</p>
<p>guest brain schrieb:</p>
<blockquote>
<p>Und am liebsten würde ich es gern so machen damit ich nicht einen Stream für eingabe und einen für ausgabe definieren muss, daher fstream:</p>
</blockquote>
<p>Es ist mir unklar, was das eine mit dem anderen zu tun hat - vielleicht weißt Du nicht, dass der fstream letztlich nichts anderes als ein ostream und ein istream ist.<br />
Außerdem sind zwei Stream-Objekte - eines für Input und eines für Output viel einfacher zu handeln.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655225</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 30 Jan 2009 21:14:24 GMT</pubDate></item></channel></rss>