<?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[Objekte auf dem Heap sichern]]></title><description><![CDATA[<p>Hey ,</p>
<p>ich habe eine kleine Frage also :</p>
<p>void funktion::status_save(klasse *object)</p>
<p>ich habe einer funktion von einer klasse ein object das auf dem heap liegt übergeben . Jetzt möchte ich dieses Objekt in eine FIle sichern :</p>
<p>geh ich richtig in der Annahme das ich das so machen muss ?</p>
<p>nfout.write((char*)(&amp;wPlayer),sizeof(wPlayer));</p>
<p>und zum einlesen einfach in einer anderen Funktion ein object der klasse &quot;klasse&quot; erzuegen zb :</p>
<p>Klasse Objekt;</p>
<p>nfin.read((char*)(&amp;Objekt), sizeof(Objekt));</p>
<p>weil wenn ich das so sichere und dann wieder einlese und ausgebe gibt er irgendwelche Zahlen aus die gar nicht in der Klasse gesichert sind<br />
Muss ich vielleicht beim Sichern oben etwas anderes schreiben also das Objekt anders vom Heap ziehen ?<br />
Ihr könnt es ja selbst ausprobieren macht euch eine klasse weißt dieser Daten zu und benutzt die oben stehenden zeilen , also bei mir gibt er beim auslesen nicht das richtige aus .. eventuell liest er schon das falsche ein . Wie kann ich denn eine Variable die in einem Object ist das im heap steht ausgeben mit objekt -&gt; funktion() kann man ja nur auf funktionen zugreifen ... <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>Hoffe ihr könnt mir helfen...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185769/objekte-auf-dem-heap-sichern</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 17:34:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185769.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Jul 2007 02:37:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 02:37:33 GMT]]></title><description><![CDATA[<p>Hey ,</p>
<p>ich habe eine kleine Frage also :</p>
<p>void funktion::status_save(klasse *object)</p>
<p>ich habe einer funktion von einer klasse ein object das auf dem heap liegt übergeben . Jetzt möchte ich dieses Objekt in eine FIle sichern :</p>
<p>geh ich richtig in der Annahme das ich das so machen muss ?</p>
<p>nfout.write((char*)(&amp;wPlayer),sizeof(wPlayer));</p>
<p>und zum einlesen einfach in einer anderen Funktion ein object der klasse &quot;klasse&quot; erzuegen zb :</p>
<p>Klasse Objekt;</p>
<p>nfin.read((char*)(&amp;Objekt), sizeof(Objekt));</p>
<p>weil wenn ich das so sichere und dann wieder einlese und ausgebe gibt er irgendwelche Zahlen aus die gar nicht in der Klasse gesichert sind<br />
Muss ich vielleicht beim Sichern oben etwas anderes schreiben also das Objekt anders vom Heap ziehen ?<br />
Ihr könnt es ja selbst ausprobieren macht euch eine klasse weißt dieser Daten zu und benutzt die oben stehenden zeilen , also bei mir gibt er beim auslesen nicht das richtige aus .. eventuell liest er schon das falsche ein . Wie kann ich denn eine Variable die in einem Object ist das im heap steht ausgeben mit objekt -&gt; funktion() kann man ja nur auf funktionen zugreifen ... <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>Hoffe ihr könnt mir helfen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1315946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315946</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 02:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 05:56:48 GMT]]></title><description><![CDATA[<p>&amp; entfernen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1315950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315950</guid><dc:creator><![CDATA[so:]]></dc:creator><pubDate>Sun, 01 Jul 2007 05:56:48 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 05:57:58 GMT]]></title><description><![CDATA[<p>und sizeof(klasse) benutzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1315951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315951</guid><dc:creator><![CDATA[so:]]></dc:creator><pubDate>Sun, 01 Jul 2007 05:57:58 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 06:39:34 GMT]]></title><description><![CDATA[<p>hola</p>
<p>so kannst du objekte maximal dann schreiben bzw. lesen wenn deine klasse nur aus einfachen datentypen (pods) wie int, float, char, bool ... bestehen.</p>
<pre><code class="language-cpp">class klasse
{
   public:
      int integer;
      float real; 
};
</code></pre>
<p>mit so ner klasse wuerde es gehen.</p>
<p>sobald du jedoch pointer, std::strings oder aehnliches in der klasse verwendest klappt das schon nicht mehr, weil die daten nicht hintereinander im speicher liegen. dann bekommst du nur muell. in dem fall musst du die daten serialisieren und dann in eine datei schreiben.</p>
<pre><code class="language-cpp">class klasse
{
   public:
      int integer;
      float real; 
      std::string str;
};

std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const klasse &amp;kl)
{
   out.write(reinterpret_cast&lt;const char*&gt;(kl.integer), sizeof(kl.integer));
   out.write(reinterpret_cast&lt;const char*&gt;(kl.real), sizeof(real));
   std::size_t len = kl.str.size(); 
   out.write(reinterpret_cast&lt;const char*&gt;(len), sizeof(len));
   out.write(kl.str.c_str(), len);
   return out.
}

// verwendung:
klasse kl;
nfout &lt;&lt; kl;
</code></pre>
<p>binaerdaten zu speichern kann natuerlich auch probleme machen, falls die datei auf einem anderen system gelesen werden soll oder du selbst z.b. von einem Win32 auf ein Win64 system umsteigen solltest, da sich die groessen der datentypen aendern kann.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1315955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315955</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sun, 01 Jul 2007 06:39:34 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 13:22:23 GMT]]></title><description><![CDATA[<p>Klappt irgendwie immer noch nicht , ich teste beim laden ja immer und lass mir einzelne daten der klasse ausgeben und da bekomm ich nur chineesische zeichen xD</p>
<p>also ich versuch ma ganz genau zu zeigen was ich habe</p>
<p>ich habe eine kLasse :</p>
<pre><code>class sPlayer
{
      public:
       std::string name;
       std::string Typ;
       int irgendwas;
       float money;
};
</code></pre>
<p>dann habe ich eine FUnktion in der die Datenzugewiesen werden :</p>
<pre><code>void cWorld::enterworld(int _irgendwas , string _name , string _Typ)
{
    sPlayer wPlayer;

    wPlayer.name= _name;
    wPlayer.irgendwas = _irgendwas;
    wPlayer.Typ = _Typ;
    wPlayer.money = 300.00;

}
</code></pre>
<p>jetzt möchte ich die Klasse sPlayer in der die Daten alle stehen sichern :</p>
<pre><code>void cWorld::status_save(sPlayer *wPlayer)
{
ofstream nfout(file_name.c_str(), ios::binary );
nfout.write((char*)(wPlayer),sizeof(sPlayer));
nfout.close();
}
</code></pre>
<p>und später wenn man das Programm zum Beispiel wieder startet laden :</p>
<pre><code>void cWorld::LoadPlayer()
{
sPlayer  wPlayer;
ifstream nfin (dateiname.c_str(), ios::binary);   //dateiname ist definiert
nfin.read((char*)(&amp;wPlayer), sizeof(sPlayer));
nfin.close();
</code></pre>
<p>so wenn ich es jetzt ausgeben will kommen total komische Zeichen :<br />
ausgeben tu ich es so :</p>
<pre><code>cout &lt;&lt; wPlayer.Typ &lt;&lt; endl;  // Zum beipspiel
</code></pre>
<p>Ich hoffe ihr versteht jetzt wie ich es machen will :</p>
<p>Ich vermute die fehler liegen beim speichern , laden , oder bei der übergabe des Pointer objekts an die funktion status_save .....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316140</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 13:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 13:58:20 GMT]]></title><description><![CDATA[<p>du hast mein posting schon gelesen oder ?</p>
<pre><code class="language-cpp">class sPlayer
{
      public:
       std::string name;
       std::string Typ;
       int irgendwas;
       float money;
};
</code></pre>
<p>ein objekt dieser klasse kannst du <strong>NICHT</strong> per write() einfach so schreiben.</p>
<pre><code class="language-cpp">std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const sPlayer &amp;my_player)
{
   /* wie du einen string speicherst bleibt dir ueberlassen,
      das ist nur ein beispiel wie du es machen koenntest */
   out.write(my_player.name.c_str(), my_player.size() + 1);
   out.write(my_player.Typ.c_str(), my_player.size() + 1);
   out.write(reinterpret_cast&lt;const char*&gt;(&amp;(my_player.irgendwas)), sizeof(my_player.irgendwas));
   out.write(reinterpret_cast&lt;const char*&gt;(&amp;(my_player.money)), sizeof(my_player.money));
  return out; 
}
</code></pre>
<p>sizeof(std::string) gibt dir schliesslich auch immer die gleiche groesse zurueck, egal wie lange der string auch sein mag.</p>
<p>auslesen musst es dann natuerlich auch wieder einzeln. kannst nichtauf einen schwung mit read() machen.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316160</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sun, 01 Jul 2007 13:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 14:33:07 GMT]]></title><description><![CDATA[<p>Ohh haa jetzt hab ich sehr viele Compile errors :</p>
<pre><code>nfin.read(wPlayer.name.c_str(), wPlayer.size() + 1);
</code></pre>
<p>--&gt; class sPlayer has no member named size</p>
<pre><code>nfin.read(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.health)), sizeof(wPlayer.health));
</code></pre>
<p>---&gt; invaild conversion const char* to char*</p>
<pre><code>nfin.read(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.health)), sizeof(wPlayer.health));
</code></pre>
<p>-----&gt; initializing argument 1 of ´std::basic_istream&lt;_charT, _Traits&gt;&amp; std::basic_istream&lt;_CharT,_traits&gt;read(_ChartT*, std::streamsize) (with _CHarT =char, _Traits =std::char_traits&lt;char&gt;]</p>
<pre><code>nfout.write(wPlayer.name.c_str(), wPlayer.size() + 1);
</code></pre>
<p>----&gt; request for member ´name in wPlayer´, which is of non-class type ´sPlayer*´<br />
(das mit allen immer durch ...)</p>
<p>Hat mich erst ma geschockt als so viele Fehler kamen xD .. liegt an der übergabe von (sPlayer *wPlayer) oder ? wie muss ich das denn richtig machen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316187</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 14:33:07 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 15:10:18 GMT]]></title><description><![CDATA[<p>hab auch falsch geschrieben.</p>
<p>sollte</p>
<pre><code class="language-cpp">std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const sPlayer &amp;my_player)
{
   /* wie du einen string speicherst bleibt dir ueberlassen,
      das ist nur ein beispiel wie du es machen koenntest */
   out.write(my_player.name.c_str(), my_player.name.size() + 1);
   out.write(my_player.Typ.c_str(), my_player.Typ.size() + 1);
   out.write(reinterpret_cast&lt;const char*&gt;(&amp;(my_player.irgendwas)), sizeof(my_player.irgendwas));
   out.write(reinterpret_cast&lt;const char*&gt;(&amp;(my_player.money)), sizeof(my_player.money));
  return out;
}
</code></pre>
<p>fuer den read brauchst du auch nor einen normalen char* - cast und keinen const char* - cast. den solltest nur beim write machen.</p>
<p>ich glaub dir fehlen einige grundlagen</p>
<p>Meep Meep</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316203</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sun, 01 Jul 2007 15:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 15:22:00 GMT]]></title><description><![CDATA[<p>mh...jetzt mekkert er noch über die strings beim einlesen</p>
<pre><code>nfin.read(wPlayer.name.c_str(), wPlayer.name.size() + 1);
</code></pre>
<p>--&gt; invaild conversion const char* to char*</p>
<p>und über alle wirtes:</p>
<pre><code>nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.money)), sizeof(wPlayer.money));
</code></pre>
<p>da sagt er : --&gt; request for member ´money´ in wPlayer´, which is of non-class type ´sPlayer*´</p>
<p>Und das sagt er bei allen writes .. sonst hat er keine Fehler mehr .. außer das ich paar falsche aufrufe hab aber das bekomm ich sicherlich alleine hin ,..<br />
ich weiß das mir paar Grundlagen fehlen ich bin noch am lernen von Ifstream<br />
und danach möchte ich mich mit der Netzwerk Programmierung außeinander setzen .<br />
Ich hab irgendwie voll Probleme das save and load in den Hauptquellcode einzubaun , weil als ich das ganze unabhänig geschrieben hatte, hat alles geklappt.<br />
siehe hier :</p>
<pre><code>class sAccount      //richtige Klasse anstatt Struct
{
public:
        string name;
        string HeroTyp;
        int health;
        int mana;
        int maxdmg;
        int mindmg;
        int defence;
};

int main()
{

    sAccount a1, a2;   //zwei Instanzen werden erzeugt

    a1.name = &quot;Toa&quot;;
    a1.HeroTyp = &quot;Mage&quot;;
    a1.health = 10;
    a1.mana = 4;
    a1.maxdmg = 12;
    a1.mindmg = 2;
    a1.defence = 99;

   int eing;  //menü zum auswählen ...
   cout &lt;&lt;&quot;1 --&gt; Speichern&quot;&lt;&lt;&quot;\n&quot;;
   cout &lt;&lt;&quot;2 --&gt; Laden&quot;&lt;&lt;&quot;\n&quot;;
   cout &lt;&lt;&quot;ihre Wahl:&quot;;
   cin &gt;&gt; eing;
   switch(eing)
   {

  case 1 :   //Save !!
  {
   system(&quot;cls&quot;);
   cout &lt;&lt; &quot;Waehle einen Accountnamen:&quot; &lt;&lt; flush;  // unter welchem namen soll es gespeichert werden
   string file_name;
   cin &gt;&gt; file_name;
   CreateDirectory(&quot;Saves&quot;, NULL);   //legt ordner save an
   file_name.insert(0, &quot;Saves\\&quot;);
   if (file_name.substr(file_name.length() - 4) != &quot;.sav&quot;)  //Hängt an den namen ein Sav
   file_name += &quot;.sav&quot;;

   ofstream nfout(file_name.c_str(), ios::binary );   //Den inhalt des files kann ein Mensch nicht lesen, i.e. binary, not text format.
   nfout.write((char*)(&amp;a1),sizeof(a1));  //liest die klasse aus und schreibt sie in die Sav file
   nfout.close();  //schließt den Stream
   system(&quot;cls&quot;);
   cout &lt;&lt; &quot;Dein Account wurde  unter '&quot; &lt;&lt; file_name &lt;&lt; &quot;' gespeichert ...&quot; &lt;&lt; endl;

  }
  break;

  case 2 :  //load !!

   system(&quot;cls&quot;);
   string dateiname;

    DIR *dirHandle;   // --- &gt; liestet das verzeichniss Save auf
    struct dirent * dirEntry;

    dirHandle = opendir(&quot;Saves\\&quot;);
    if (dirHandle) {
    while (0 != (dirEntry = readdir(dirHandle))) {
    puts(dirEntry-&gt;d_name);
    }
    closedir(dirHandle);
    }
    cout &lt;&lt; &quot;Gib den Namen deines Saves ein, den du laden willst:&quot;;
    cin &gt;&gt; dateiname;
    dateiname += &quot;.sav&quot;;    // wenn man namen ohne sav eingibt hängt das save dran
    system(&quot;Cls&quot;);
    cout &lt;&lt; &quot;Load '&quot; &lt;&lt; dateiname &lt;&lt; &quot;' ...\n&quot;;
    dateiname.insert(0, &quot;Saves\\&quot;);

    ifstream nfin (dateiname.c_str(), ios::binary);
    nfin.read((char*)(&amp;a2), sizeof(a2));    //lad alles in die Klasse
    nfin.close();  //schließt den STream

    // Ausgabe
    cout &lt;&lt; &quot;Account as read from binary file &quot; &lt;&lt;dateiname &lt;&lt;endl;
    cout &lt;&lt; a2.name &lt;&lt; endl;
    cout &lt;&lt; a2.HeroTyp &lt;&lt; endl;  //gibt alles aus
    cout &lt;&lt; a2.health &lt;&lt; endl;
    cout &lt;&lt; a2.mana &lt;&lt; endl;
    cout &lt;&lt; a2.maxdmg &lt;&lt; endl;
    cout &lt;&lt; a2.mindmg &lt;&lt; endl;
    cout &lt;&lt; a2.defence &lt;&lt; endl;

    break;
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1316214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316214</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 15:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 16:05:18 GMT]]></title><description><![CDATA[<p>Toa schrieb:</p>
<blockquote>
<p>mh...jetzt mekkert er noch über die strings beim einlesen</p>
<pre><code class="language-cpp">nfin.read(wPlayer.name.c_str(), wPlayer.name.size() + 1);
</code></pre>
<p>--&gt; invaild conversion const char* to char*</p>
</blockquote>
<p>naja die member-funktion c_str() liefert dir ja uach einen 'const char*' zurueck. da kannst du auch nichts reinschreiben. und <a href="http://wPlayer.name" rel="nofollow">wPlayer.name</a> kann auch nicht erraten wie lange der string sein wird. das funktioniert so alles nicht. du solltest dich mal gruendlich mit den grundlagen auseinander setzen.</p>
<p>Toa schrieb:</p>
<blockquote>
<pre><code class="language-cpp">nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.money)), sizeof(wPlayer.money));
</code></pre>
<p>da sagt er : --&gt; request for member ´money´ in wPlayer´, which is of non-class type ´sPlayer*´</p>
</blockquote>
<p>seh ich in deinem listing auch nicht wo das sein sollte.<br />
vielleicht solltest du mal mit volkards kurs anfangen.<br />
<a href="http://www.volkard.de/vcppkold/inhalt.html" rel="nofollow">http://www.volkard.de/vcppkold/inhalt.html</a><br />
ein gut geschriebener und leichtverstaendlicher kurs.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316240</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sun, 01 Jul 2007 16:05:18 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 16:37:47 GMT]]></title><description><![CDATA[<p>also das obere hab ich gelöst <sup>.</sup> war ja dumm von mir du hast ja ganz recht das c_str() gibt immer ein const char zurück und kann nicht modifiziert werden.</p>
<p>Aber das untere macht mir Probleme</p>
<pre><code>nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.money)), sizeof(wPlayer.money));
</code></pre>
<p>---&gt; request for member ´money´ in wPlayer´, which is of non-class type ´sPlayer*´</p>
<p>Kann es vielleicht daran liegen das ich der FUnktion die sachen so übergeben hab :</p>
<p>void cWorld::status_save(sPlayer *wPlayer) &lt;-- also das der SternOperator falsch ist ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316254</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 16:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 16:48:20 GMT]]></title><description><![CDATA[<p>Toa schrieb:</p>
<blockquote>
<p>Kann es vielleicht daran liegen das ich der FUnktion die sachen so übergeben hab :</p>
<p>void cWorld::status_save(sPlayer *wPlayer) &lt;-- also das der SternOperator falsch ist ?</p>
</blockquote>
<p>ja. du uebergibst einen zeiger.<br />
mach es per referenz oder du musst den zeiger dereferenzieren.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316261</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sun, 01 Jul 2007 16:48:20 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 17:26:18 GMT]]></title><description><![CDATA[<p>eine dereferenzierung würde dann so ausehen sPlayer&amp;*wPlayer; oder ? .. ach man so kurz vor dem Ziel xD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316293</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 17:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 17:56:25 GMT]]></title><description><![CDATA[<p>ne so wPlayer-&gt;money. Besser wäre es aber wenn du keinen zeiger sondern eine referenz übergen würdest. also status_save(sPlayer&amp; wPlayer). Beim Aufrufen der funktion dann ohne &amp; übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316310</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 01 Jul 2007 17:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 18:44:31 GMT]]></title><description><![CDATA[<p>Hab jetzt zwar keine Compile errors mehr aber es geht immer noch net *heul* ich verzeifel noch xD</p>
<p>Meine Klasse :</p>
<pre><code>class sPlayer
{
      public:
       std::string name;
       std::string HeroTyp;
       int health;
       int mana;
       int maxdmg;
       int mindmg;
       int defence;
       int level;
       int xp;
       float geld;
};
</code></pre>
<p>Die Klasse in der die Funktionen Deffiniert sind :</p>
<pre><code>class cWorld
{
      public:

               // Kirche - save /Delete Account / SpielZeit anzeige
             void Kirche(sPlayer *wPlayer);
             void LoadPlayer();

             void status_save(sPlayer&amp; wPlayer);

};
</code></pre>
<p>die FUnktion in der ich die Kirche aufrufe in der man Saven kann :</p>
<pre><code>void cWorld::Greenvillage(sPlayer *wPlayer)
{

     string eingabe;
     // Auswahl
     system(&quot;cls&quot;);
     getline(20); colorcout('1',&quot;Wohin moechten Sie?&quot;); getline(20);
     cout
          &lt;&lt; &quot;-Kirche\n&quot;;
     newline(1); // hehe :P

     cin &gt;&gt; eingabe;

..... Bla Bla ..: 

     else if(eingabe == &quot;-Kirche&quot; ||eingabe == &quot;-Kirche&quot; ||eingabe == &quot;kirche&quot; ||eingabe == &quot;Kirche&quot;)
         Kirche(wPlayer); //Kirche - speichern - löschen - spielzeit
     {

}
</code></pre>
<p>DIe Kirche an SIch in der man speichern kann:</p>
<pre><code>void cWorld::Kirche(sPlayer *wPlayer)     //Kirche - speichern - löschen - spielzeit
{
    char menue;

	cout &lt;&lt; &quot;(s)pielstand speichern\n&quot;;
	cout &lt;&lt; &quot;(a)ccounts löschen&quot;;
	cout &lt;&lt; &quot;(g)esamte Spielzeit anzeigen&quot;;
	cout &lt;&lt; &quot;____________________\n&quot;;
	cout &lt;&lt; &quot;Bitte w\204hlen:\n&quot;;
	cin &gt;&gt; menue;
	cout &lt;&lt; &quot;\a&quot;;
	switch (menue)
	{
		case ('s'):
			{
				cWorld save;
                save.status_save(*wPlayer);  // das ist nur WIchtig !!!!
			}break;
		case ('a'):
			{
				cout &lt;&lt; &quot;loeschen&quot;;
			}break;
		case ('g'):
			{
				cout &lt;&lt; &quot;spielzeit&quot;;  //Muss noch gemacht werden !

			}break;

	}
	}
</code></pre>
<p>Das Saven:</p>
<pre><code>void cWorld::status_save(sPlayer&amp; wPlayer)
{

   cout &lt;&lt; &quot;Waehle einen Accountnamen:&quot; &lt;&lt; flush;  // unter welchem namen soll es gespeichert werden
   string file_name;
   cin &gt;&gt; file_name;
   CreateDirectory(&quot;Saves&quot;, NULL);   //legt ordner save an
   file_name.insert(0, &quot;Saves\\&quot;);
   if (file_name.substr(file_name.length() - 4) != &quot;.sav&quot;)  //Hängt an den namen ein Sav
   file_name += &quot;.sav&quot;;

   ofstream nfout(file_name.c_str(), ios::binary );   //Den inhalt des files kann ein Mensch nicht lesen, i.e. binary, not text format.
   nfout.write(wPlayer.name.c_str(), wPlayer.name.size() + 1);
   nfout.write(wPlayer.HeroTyp.c_str(), wPlayer.HeroTyp.size() + 1);   //liest strings ein
   nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.health)), sizeof(wPlayer.health));   //liest alles einzeln ein
   nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.mana)), sizeof(wPlayer.mana));
   nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.maxdmg)), sizeof(wPlayer.maxdmg));
   nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.mindmg)), sizeof(wPlayer.mindmg));
   nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.defence)), sizeof(wPlayer.defence));
   nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.level)), sizeof(wPlayer.level));
   nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.xp)), sizeof(wPlayer.xp));
   nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;(wPlayer.geld)), sizeof(wPlayer.geld));
   nfout.close();  //schließt den Stream
   system(&quot;cls&quot;);
   cout &lt;&lt; &quot;Dein Account wurde  unter '&quot; &lt;&lt; file_name &lt;&lt; &quot;' gespeichert ...\n\n&quot; ;
   system(&quot;pause&quot;);

}
</code></pre>
<p>Und Später dann das laden und ausgeben :</p>
<pre><code>void cWorld::LoadPlayer()
{
    sPlayer  wPlayer;

   string dateiname;

    DIR *dirHandle;   // --- &gt; liestet das verzeichniss Save auf
    struct dirent * dirEntry;

    dirHandle = opendir(&quot;Saves\\&quot;);
    if (dirHandle) {
    while (0 != (dirEntry = readdir(dirHandle))) {
    puts(dirEntry-&gt;d_name);
    }
    closedir(dirHandle);
    }
    cout &lt;&lt; &quot;Gib den Namen deines Saves ein, den du laden willst:&quot;;
    cin &gt;&gt; dateiname;
    dateiname += &quot;.sav&quot;;    // wenn man namen ohne sav eingibt hängt das save dran
    system(&quot;Cls&quot;);
    cout &lt;&lt; &quot;Load '&quot; &lt;&lt; dateiname &lt;&lt; &quot;' ...\n&quot;;
    dateiname.insert(0, &quot;Saves\\&quot;);

    ifstream nfin (dateiname.c_str(), ios::binary);

    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.name)), sizeof(wPlayer.name));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.HeroTyp)), sizeof(wPlayer.HeroTyp));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.health)), sizeof(wPlayer.health));   //liest alles einzeln ein
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.mana)), sizeof(wPlayer.mana));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.maxdmg)), sizeof(wPlayer.maxdmg));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.mindmg)), sizeof(wPlayer.mindmg));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.defence)), sizeof(wPlayer.defence));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.level)), sizeof(wPlayer.level));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.xp)), sizeof(wPlayer.xp));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.geld)), sizeof(wPlayer.geld));
    nfin.close();  //schließt den STream

    cout &lt;&lt; &quot;Account as read from binary file &quot; &lt;&lt;dateiname &lt;&lt;endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.name &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.HeroTyp &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.health &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.mana &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.maxdmg &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.mindmg &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.defence &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.xp &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.geld &lt;&lt; endl;
    system(&quot;pause&quot;);

}
</code></pre>
<p>...SO jetzt hab ich echt alles gepostet , ich bin am rande der verzeiflung ..Seit Stunden und Tagen verusche ich es einzubaun und es geht einfach nicht</p>
<p>MFG TOa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316333</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 18:44:31 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 18:58:40 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>bietet boost nicht Mittel zur Serialisierung?</p>
<p>Grüße Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316344</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 01 Jul 2007 18:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:07:00 GMT]]></title><description><![CDATA[<p><a href="http://www.boost.org/libs/serialization/doc/index.html" rel="nofollow">http://www.boost.org/libs/serialization/doc/index.html</a></p>
<p>sollte man da einfach mal einsetzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316351</guid><dc:creator><![CDATA[ronny]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:07:00 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:07:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.name)), sizeof(wPlayer.name));
</code></pre>
<p>So geht das nicht. Man kann nicht einfach einen std::string* nach char* casten.</p>
<p>Mach's z.B. so:</p>
<pre><code class="language-cpp">std::vector&lt;char&gt; buf(1024);
nfin.read(&amp;(buf[0]), buf.size());
wPlayer.name.assign(buf.begin(), buf.end());
</code></pre>
<p>Damit würden allerdings nur Strings bis 1024 Zeichen eingelesen werden können, außerdem hab ich's jetzt nicht getestet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316352</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:12:02 GMT]]></title><description><![CDATA[<p>Am besten schreibst du vor jeden String noch einmal die Länge des strings. Denn mein Beispiel würde jetzt nur mit Strings gehen, die immer 1024 Zeichen lang sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316355</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:12:34 GMT]]></title><description><![CDATA[<p>bitte keine tipps mehr über unsichere cast-orgien - gerade anfänger haben damit arge probleme</p>
<p>das boost zeug sollte wesentlich praktischer und einfacher zu verwenden sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316357</guid><dc:creator><![CDATA[ronny]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:12:34 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:19:19 GMT]]></title><description><![CDATA[<p>das problem beim einlesen seiner strings ist, das er nicht weiß wie lange sie sind. also koennte man beim speichern der strings noch die laenge mitgeben. dann hat man schon ein problem weniger.</p>
<pre><code class="language-cpp">inline void WriteStringToStream(std::ostream &amp;out, const std::string &amp;str)
{
   std::size_t len = str.size();
   out.write(reinterpret_cast&lt;const char*&gt;(&amp;len), sizeof(len));
   out.write(str.c_str(), len); // '\0' brauchen wir nicht mehr, weil wir die laenge speichern
}
</code></pre>
<p>zum auslesen kann man dann folgendes machen:</p>
<pre><code class="language-cpp">void ReadStringFromStream(std::istream &amp;in, std::string &amp;str)
{
   std::size_t len;
   in.read(reinterpret_cast&lt;char*&gt;(&amp;len), sizeof(len));
   char *buffer = new char[len];
   in.read(buffer, len);
   str.assign(buffer, len);
   delete[] buffer;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1316366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316366</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:21:01 GMT]]></title><description><![CDATA[<p>schaut euch ma die ausgabe an :</p>
<p><a href="http://www.imagehack.eu/uploads/b7f20d91fe.jpg" rel="nofollow">http://www.imagehack.eu/uploads/b7f20d91fe.jpg</a></p>
<p>die ersten beiden Sachen stimmen noch ich hieß Ujih und mein Typ war Warrior aber die Zahlen dann nicht mehr .. also die sTrings werden richtig gespeichert und ausgegeben nur die zahlen haben Probleme <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="😕"
    /> ... wisst ihr warum ? die Lösung ist so nahe ^^</p>
<p>PS :</p>
<p>sieht jetzt so aus :</p>
<pre><code>ifstream nfin (dateiname.c_str(), ios::binary);
    vector&lt;char&gt; buf(1024);
    nfin.read(&amp;(buf[0]), buf.size());
    wPlayer.name.assign(buf.begin(), buf.end());
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.HeroTyp)), sizeof(wPlayer.HeroTyp));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.health)), sizeof(wPlayer.health));   //liest alles einzeln ein
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.mana)), sizeof(wPlayer.mana));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.maxdmg)), sizeof(wPlayer.maxdmg));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.mindmg)), sizeof(wPlayer.mindmg));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.defence)), sizeof(wPlayer.defence));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.level)), sizeof(wPlayer.level));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.xp)), sizeof(wPlayer.xp));
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.geld)), sizeof(wPlayer.geld));
    nfin.close();  //schließt den STream

    cout &lt;&lt; &quot;Account as read from binary file &quot; &lt;&lt;dateiname &lt;&lt;endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.name &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.HeroTyp &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.health &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.mana &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.maxdmg &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.mindmg &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.defence &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.xp &lt;&lt; endl;
    system(&quot;pause&quot;);
    cout &lt;&lt; wPlayer.geld &lt;&lt; endl;
    system(&quot;pause&quot;);
</code></pre>
<p>und noch eine Frage warum muss ich den HeroTyp denn nicht auch so wie name umschreiben und er wird trotzdem richtig ausgegeben also bzw eingelesen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316368</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:21:01 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:23:18 GMT]]></title><description><![CDATA[<p>Du musst noch die Größe des Strings mitspeichern. Hier mal ein Minimalbeispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;

void SaveString(std::ofstream&amp; fout, const std::string&amp; str)
{
	int size = str.size();
	fout.write(reinterpret_cast&lt;const char*&gt;(&amp;size), sizeof(size));S
	fout.write(str.c_str(), size);
}

std::string LoadString(std::ifstream&amp; fin)
{
	int size;
	fin.read(reinterpret_cast&lt;char*&gt;(&amp;size), sizeof(size));
	std::vector&lt;char&gt; buf(size);
	fin.read(&amp;buf[0], size);
	std::string temp(buf.begin(), buf.end()); // oder mit .assign(...)
	return temp;
}

int main()
{
	std::ofstream fout(&quot;test.txt&quot;);
	SaveString(fout, &quot;Hallo Welt!&quot;);
	SaveString(fout, &quot;Test!&quot;);
	fout.close();
	std::ifstream fin(&quot;test.txt&quot;);
	std::cout &lt;&lt; LoadString(fin) &lt;&lt; std::endl;
	std::cout &lt;&lt; LoadString(fin) &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1316370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316370</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:32:44 GMT]]></title><description><![CDATA[<p>Öhm warum denn ? die Beiden Strings werden doch richtig einglesen nur die FLoat und integer Variablen der Klasse nicht ! <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>meinst du dann so ?</p>
<p>int size = wPlayer.size();<br />
nfout.write(reinterpret_cast&lt;const char*&gt;(&amp;size), sizeof(size));S</p>
<p>ne oder das kann net sein man muss ja irgendwo die namen der strings reinbringen aber das mit den Strings klappt ja nur wie gesagt die Interger und FLoat Variablen der Klasse sPlayer machen Probleme , sieht man ja auch auf dem Bild ..der Name und der Typ wird richtig ausgegeebn aber die Zahlen nicht die dahinter FOlgen und dann noch eine andere Frage : Ich hab doch Binary als Typ angegeben aber man kann den Namen und den Typ einfach so in der txt lesen .</p>
<p><a href="http://www.imagehack.eu/uploads/9f63fa90e2.jpg" rel="nofollow">http://www.imagehack.eu/uploads/9f63fa90e2.jpg</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316375</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:32:44 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:33:01 GMT]]></title><description><![CDATA[<p>Toa schrieb:</p>
<blockquote>
<p>die Beiden Strings werden doch richtig einglesen nur die FLoat und integer Variablen der Klasse nicht !</p>
</blockquote>
<p>Eigentlich wird nichts richtig gelesen. Der erste String ist 1024 Zeichen lang, mein erstes Beispiel war ziemlich schlecht. Deswegen siehst du auch noch den zweiten. Du musst die Länge irgendwie speichern, schau dir den Code von Meep Meep und mir mal an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316376</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:33:01 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte auf dem Heap sichern on Sun, 01 Jul 2007 19:40:26 GMT]]></title><description><![CDATA[<p>Aber es ist doch logisch das man den Zweiten auch sieht weil der ja auch ausgeeben wird .. aber ich glaube ich verstehe was du meinst wenn man nur den ersten ausgegeben h#tte , würde der zweite auch ausgegeben werden weil er mitgesavt wurde ! .. okay haste ne IDee wegen den Integer Vars und den FLoat warum die net richtig gespeichert und ausgegeebn werden ?? .. und wegen dem Lesen der txt</p>
<p>Kannst du mir für die beiden Strings das mit dem Länge saven mal machen ? damit ichs seh wies geht ? ...</p>
<p>bei saves sind es die beiden:</p>
<pre><code>nfout.write(wPlayer.name.c_str(), wPlayer.name.size() + 1);
   nfout.write(wPlayer.HeroTyp.c_str(), wPlayer.HeroTyp.size() + 1);
</code></pre>
<p>und bei load hab ich das</p>
<pre><code>ector&lt;char&gt; buf(1024);
    nfin.read(&amp;(buf[0]), buf.size());
    wPlayer.name.assign(buf.begin(), buf.end());
    nfin.read(reinterpret_cast&lt; char*&gt;(&amp;(wPlayer.HeroTyp)), sizeof(wPlayer.HeroTyp));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1316378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316378</guid><dc:creator><![CDATA[Toa]]></dc:creator><pubDate>Sun, 01 Jul 2007 19:40:26 GMT</pubDate></item></channel></rss>