<?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[Dynamische Stringklasse: kann nicht speichern]]></title><description><![CDATA[<p>Ich hab mal wieder ein Problem:</p>
<p>Ich habe eine danamische Stringklasse implementiert (wie aus einem Buch verlangt)<br />
Jetzt habe ich bloß das Problem, dass ich eine Instanz der Stringklasse ein Element einer anderen Klasse ist, die eigentlich nur eine Containerklasse darstellt. Wenn ich jetzt die komplette Instanz der Containerklasse speichere und später wieder lade, kommt es zum Fehler.</p>
<p>Der Fehler liegt glaube ich in der String-Klasse:<br />
Sie enthält einen Pointer auf char (char *m_pcBuffer;) Also wenn ich die Klasse speichere, dann wird der Pointer gespeichert und nicht der eigentliche Sring.<br />
Bis hierhin hab ich das jetzt verstanden</p>
<p>Aber:<br />
Wenn ich statt char *foo einfach char foo[15] nehme, dann kann ich zwar fehlerfrei speichern und laden (aus Datei) aber es ist nicht mehr dynamisch</p>
<p>Was soll ich tun??? <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/196756/dynamische-stringklasse-kann-nicht-speichern</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 15:00:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196756.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Nov 2007 16:23:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamische Stringklasse: kann nicht speichern on Fri, 02 Nov 2007 16:23:47 GMT]]></title><description><![CDATA[<p>Ich hab mal wieder ein Problem:</p>
<p>Ich habe eine danamische Stringklasse implementiert (wie aus einem Buch verlangt)<br />
Jetzt habe ich bloß das Problem, dass ich eine Instanz der Stringklasse ein Element einer anderen Klasse ist, die eigentlich nur eine Containerklasse darstellt. Wenn ich jetzt die komplette Instanz der Containerklasse speichere und später wieder lade, kommt es zum Fehler.</p>
<p>Der Fehler liegt glaube ich in der String-Klasse:<br />
Sie enthält einen Pointer auf char (char *m_pcBuffer;) Also wenn ich die Klasse speichere, dann wird der Pointer gespeichert und nicht der eigentliche Sring.<br />
Bis hierhin hab ich das jetzt verstanden</p>
<p>Aber:<br />
Wenn ich statt char *foo einfach char foo[15] nehme, dann kann ich zwar fehlerfrei speichern und laden (aus Datei) aber es ist nicht mehr dynamisch</p>
<p>Was soll ich tun??? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1396508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396508</guid><dc:creator><![CDATA[Vox 3D]]></dc:creator><pubDate>Fri, 02 Nov 2007 16:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Stringklasse: kann nicht speichern on Fri, 02 Nov 2007 16:59:52 GMT]]></title><description><![CDATA[<p>Wie hast du laden und speichern implementiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396535</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 02 Nov 2007 16:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Stringklasse: kann nicht speichern on Fri, 02 Nov 2007 17:26:41 GMT]]></title><description><![CDATA[<p>So</p>
<pre><code class="language-cpp">struct
{
    MyString s; //Meine dynamische Stringklasse
    //Weitere Daten...
} data;

//Schreiben
ofstream OutFile(&quot;Data.bin&quot;,ios::out|ios::binary);
OutFile.write(reinterpret_cast&lt;char *&gt;(data),sizeof(data));
OutFile.close();

//Lesen
ifstream InFile(&quot;Data.bin&quot;,ios::in|ios::binary);
InFile.read(reinterpret_cast&lt;char *&gt;(data),sizeof(data));
InFile.close();
</code></pre>
<p>Es gibt 2 Programme eins zum schreiben und eins zum lesen (Hat tiefere Bedeutung, frag nicht warum 2 Programme)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396552</guid><dc:creator><![CDATA[Vox 3D]]></dc:creator><pubDate>Fri, 02 Nov 2007 17:26:41 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Stringklasse: kann nicht speichern on Fri, 02 Nov 2007 17:37:15 GMT]]></title><description><![CDATA[<p>Wird so nicht gehen ... bzw. kommt auf deine MyString klasse an, aber sizeof gibt dir nicht die Länge deines Strings mal sizeof(char[wchar_t]) sondern nur sizeof(char) ... also in dem Fall ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396558</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Fri, 02 Nov 2007 17:37:15 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Stringklasse: kann nicht speichern on Fri, 02 Nov 2007 17:38:10 GMT]]></title><description><![CDATA[<p>Die beiden dürften dich interessieren:<br />
<a href="http://c-plusplus.net/forum/viewtopic-var-t-is-196751.html" rel="nofollow">http://c-plusplus.net/forum/viewtopic-var-t-is-196751.html</a><br />
<a href="http://c-plusplus.net/forum/viewtopic-var-t-is-196447.html" rel="nofollow">http://c-plusplus.net/forum/viewtopic-var-t-is-196447.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396560</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 02 Nov 2007 17:38:10 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Stringklasse: kann nicht speichern on Fri, 02 Nov 2007 18:02:15 GMT]]></title><description><![CDATA[<p>Sorry hab mich verschrieben, statt</p>
<pre><code class="language-cpp">reinterpret_cast&lt;char *&gt;(data)
//besser
reinterpret_cast&lt;char *&gt;(&amp;data)
</code></pre>
<p>Und das Problem liegt nicht an sizeof, sondern daran, dass ich nur den Pointer auf den Buffer (also jetzt in der MyString-Klasse) speichere. Wenn ich das speichern und Laden in einem Programm habe, dann funktioniert es, ist ja logisch, der Pointer ist ja der selbe. Wie soll ich das innerhalb von MyString implementieren, sodass der komplette Buffer innerhalb von MyString ist, und das dynamisch <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/1396570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396570</guid><dc:creator><![CDATA[Vox 3D]]></dc:creator><pubDate>Fri, 02 Nov 2007 18:02:15 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Stringklasse: kann nicht speichern on Fri, 02 Nov 2007 18:08:18 GMT]]></title><description><![CDATA[<p>Höö? Dein schreiben ist einfach falsch ... überlade lieber den operator &lt;&lt; ...</p>
<pre><code class="language-cpp">std::string string;

std::ofstream OutFile(&quot;Data.bin&quot;, std::ios::binary);
OutFile.write(string.c_str(), sizeof(char) * (string.length() + 1));
</code></pre>
<p>... so damit du es auch lesen kannst, solltest du aber vor deinen String immer noch die Länge von diesem schreiben ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396574</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Fri, 02 Nov 2007 18:08:18 GMT</pubDate></item></channel></rss>