<?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[Mehrere Instanzen einer Klasse abspeichern (2)]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>Ich habe gestern bereits unter diesem Titel gepostet, und es wurde mir bereits sehr geholfen. Da das Thema mitlerweile sehr lang geworden ist, beginne ich hier neu.</p>
<p>hier nochmals mein Program:</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
using namespace std;

class element
{
public:
int a;
string s;
element*next;

friend ostream&amp; operator&lt;&lt;(std::ostream&amp; os, element const&amp; e)
    {
        os&lt;&lt;e.a&lt;&lt;e.s;//&lt;&lt;e.next;

         return os; // Referenz auf Stream zurückgeben -&gt; damit os &lt;&lt; a &lt;&lt; b &lt;&lt; c möglich wird
    }

friend istream&amp; operator&gt;&gt;(std::istream&amp; is, element&amp; e)
    {
         is&gt;&gt;e.a;//&gt;&gt;e.s;//&gt;&gt;e.next;
		 std::getline(is,e.s);
         return is; 
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
element m,n;
m.a=7;
m.s=&quot;hallo welt&quot;;

n.a=5;
n.s=&quot;hello&quot;;

std::ofstream os(&quot;Bla.txt&quot;);
os &lt;&lt; m;
os&lt;&lt; n;
os.close();

std::ifstream stream(&quot;Bla.txt&quot;);
element k,l;
stream &gt;&gt; k;
stream &gt;&gt;l;

cout&lt;&lt;k.a&lt;&lt;&quot;   &quot;&lt;&lt;k.s&lt;&lt;endl;
cout&lt;&lt;l.a&lt;&lt;&quot;   &quot;&lt;&lt;l.s&lt;&lt;endl;
}
</code></pre>
<p>Das einzige, was ich geändert habe ist Zeile 25, sodass ich den String jetzt neu als Zeile lese.<br />
Noch immer habe ich das Problem (so vermute ich jedenfalls), dass in Zeile 50 ¨<br />
das Program nicht erkennt, wo k.s zu ende ist und wo l.a beginnt.<br />
Wie kann man das lösen?</p>
<p>Die Instanz l sollte in Zeile 50 die Werte von n übernehmen, aber das funktioniert nicht. Wer kann mir helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311750/mehrere-instanzen-einer-klasse-abspeichern-2</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 14:17:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311750.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Dec 2012 19:55:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrere Instanzen einer Klasse abspeichern (2) on Thu, 13 Dec 2012 19:55:45 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>Ich habe gestern bereits unter diesem Titel gepostet, und es wurde mir bereits sehr geholfen. Da das Thema mitlerweile sehr lang geworden ist, beginne ich hier neu.</p>
<p>hier nochmals mein Program:</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
using namespace std;

class element
{
public:
int a;
string s;
element*next;

friend ostream&amp; operator&lt;&lt;(std::ostream&amp; os, element const&amp; e)
    {
        os&lt;&lt;e.a&lt;&lt;e.s;//&lt;&lt;e.next;

         return os; // Referenz auf Stream zurückgeben -&gt; damit os &lt;&lt; a &lt;&lt; b &lt;&lt; c möglich wird
    }

friend istream&amp; operator&gt;&gt;(std::istream&amp; is, element&amp; e)
    {
         is&gt;&gt;e.a;//&gt;&gt;e.s;//&gt;&gt;e.next;
		 std::getline(is,e.s);
         return is; 
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
element m,n;
m.a=7;
m.s=&quot;hallo welt&quot;;

n.a=5;
n.s=&quot;hello&quot;;

std::ofstream os(&quot;Bla.txt&quot;);
os &lt;&lt; m;
os&lt;&lt; n;
os.close();

std::ifstream stream(&quot;Bla.txt&quot;);
element k,l;
stream &gt;&gt; k;
stream &gt;&gt;l;

cout&lt;&lt;k.a&lt;&lt;&quot;   &quot;&lt;&lt;k.s&lt;&lt;endl;
cout&lt;&lt;l.a&lt;&lt;&quot;   &quot;&lt;&lt;l.s&lt;&lt;endl;
}
</code></pre>
<p>Das einzige, was ich geändert habe ist Zeile 25, sodass ich den String jetzt neu als Zeile lese.<br />
Noch immer habe ich das Problem (so vermute ich jedenfalls), dass in Zeile 50 ¨<br />
das Program nicht erkennt, wo k.s zu ende ist und wo l.a beginnt.<br />
Wie kann man das lösen?</p>
<p>Die Instanz l sollte in Zeile 50 die Werte von n übernehmen, aber das funktioniert nicht. Wer kann mir helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2279877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2279877</guid><dc:creator><![CDATA[sulky]]></dc:creator><pubDate>Thu, 13 Dec 2012 19:55:45 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Instanzen einer Klasse abspeichern (2) on Thu, 13 Dec 2012 20:26:25 GMT]]></title><description><![CDATA[<p>Meine Frage wurde zwischenzeitlich beantwortet. somit bitte keine Antworten mehr schreiben.<br />
Besten Dank an alle, die mir hier gehlfen haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2279892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2279892</guid><dc:creator><![CDATA[sulky]]></dc:creator><pubDate>Thu, 13 Dec 2012 20:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Instanzen einer Klasse abspeichern (2) on Thu, 13 Dec 2012 20:28:21 GMT]]></title><description><![CDATA[<p>Wie im anderen Thread angedeutet musst du deinen Code so erweitern, dass die Elemente voneinander getrennt sind.</p>
<p>Am besten erledigst du das direkt im Operator:</p>
<pre><code>friend ostream&amp; operator&lt;&lt;(std::ostream&amp; os, element const&amp; e)
    {
        os &lt;&lt; e.a &lt;&lt; &quot; &quot;;
		os &lt;&lt; e.s &lt;&lt; &quot;\n&quot;;//&lt;&lt;e.next;

         return os; // Referenz auf Stream zurückgeben -&gt; damit os &lt;&lt; a &lt;&lt; b &lt;&lt; c möglich wird
    }
</code></pre>
<p>So ist die Zahl durch ein Leerzeichen getrennt und der std::string durch eine Leerzeile. So weiß der Stream wie weit er lesen muss und du hast damit die Trennung realisiert.</p>
<p>Dann kannst du auch problemlos schreiben:</p>
<pre><code>os &lt;&lt; m;
os &lt;&lt; n;
</code></pre>
<p>Wichtig ist, dass das Leerzeichen auch hinter der Zahl ist. Denn die Datei würde für a = 44 und s = 123Text so aussehen:<br />
44123Text</p>
<p>Beim Auslesen wüdest du als Zahl dann fälschlicherweise 44123 erhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2279893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2279893</guid><dc:creator><![CDATA[jjjj]]></dc:creator><pubDate>Thu, 13 Dec 2012 20:28:21 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Instanzen einer Klasse abspeichern (2) on Thu, 13 Dec 2012 20:56:04 GMT]]></title><description><![CDATA[<p>Ja, jetzt versteh ich es.<br />
Auch kann ch jetzt die datei mit dem editor öffnen und mir so einen überblick verschaffen.<br />
Du hast mir wirklich sehr geholfen.<br />
Besten Dank auch an Sone und alle, die mir geholfen haben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2279901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2279901</guid><dc:creator><![CDATA[sulky]]></dc:creator><pubDate>Thu, 13 Dec 2012 20:56:04 GMT</pubDate></item></channel></rss>