<?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[Strukturen lesen funktioniert nicht]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines Problem mit meiner c++ lesemethode.<br />
Ich versuche heightmaps auszulesen aus einer BinaryDatei.<br />
Dafür habe ich meine Struktur angelegt:</p>
<pre><code>struct mapcell {
public:
	short texid;
	char height;
};
</code></pre>
<p>natürlich ist dann alles in mapblocks unterteilt:</p>
<pre><code>struct mapblock {
public:
	mapcell cells[16];
};
</code></pre>
<p>Ich habe dann mit c# meine Datei geschrieben in der ich sage:<br />
16x16 Blöcke u. jeder Block hat 4x4 cells.<br />
Blöcke sind im Speicher hintereinander:</p>
<pre><code>using (BinaryWriter bin = new BinaryWriter(new FileStream(&quot;test.map&quot;,FileMode.Create)))
{				
  for (int i=0;i &lt; 16;i++)
  {
      for (int a=0;a &lt; 16;a++)
      {
          for (int j=0;j &lt; 4*4;j++)
          {
		 bin.Write((short)1); //texture
		 bin.Write((byte)0); //Z
	  }
      }
   }
}
</code></pre>
<p>Wenn ich nun mit c++ meinen array mit mapblock block[16*16] erstelle und ihn folgendermasen einlese:</p>
<pre><code>void Map::loadmap(string loc)
{	
	ifstream is;
	is.open (loc.c_str(), ios::binary );

	mapblock block[16*16]; // == 16x16
	is.read((char*)&amp;block,sizeof(b));

...
}
</code></pre>
<p>Dann sieht mein Output nicht so aus wie ich ihn haben will:<br />
Ich bräuchte immer den Output:</p>
<pre><code>texture=1
z=0
texture=1
z=0
....
</code></pre>
<p>und das 16x16x4x4 mal...<br />
ich bekomme aber</p>
<pre><code>texture=1
z=0
texture=0
z=1
texutre=256
z=0
texture=1
z=0
..... usw
</code></pre>
<p>muss ich der struktur oder lesemethode sonst irgendwelche informationen übergeben, damit sie richtig ließt?</p>
<p>mfg hurraa</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/241825/strukturen-lesen-funktioniert-nicht</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 02:18:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/241825.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 May 2009 15:58:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Tue, 26 May 2009 16:03:11 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines Problem mit meiner c++ lesemethode.<br />
Ich versuche heightmaps auszulesen aus einer BinaryDatei.<br />
Dafür habe ich meine Struktur angelegt:</p>
<pre><code>struct mapcell {
public:
	short texid;
	char height;
};
</code></pre>
<p>natürlich ist dann alles in mapblocks unterteilt:</p>
<pre><code>struct mapblock {
public:
	mapcell cells[16];
};
</code></pre>
<p>Ich habe dann mit c# meine Datei geschrieben in der ich sage:<br />
16x16 Blöcke u. jeder Block hat 4x4 cells.<br />
Blöcke sind im Speicher hintereinander:</p>
<pre><code>using (BinaryWriter bin = new BinaryWriter(new FileStream(&quot;test.map&quot;,FileMode.Create)))
{				
  for (int i=0;i &lt; 16;i++)
  {
      for (int a=0;a &lt; 16;a++)
      {
          for (int j=0;j &lt; 4*4;j++)
          {
		 bin.Write((short)1); //texture
		 bin.Write((byte)0); //Z
	  }
      }
   }
}
</code></pre>
<p>Wenn ich nun mit c++ meinen array mit mapblock block[16*16] erstelle und ihn folgendermasen einlese:</p>
<pre><code>void Map::loadmap(string loc)
{	
	ifstream is;
	is.open (loc.c_str(), ios::binary );

	mapblock block[16*16]; // == 16x16
	is.read((char*)&amp;block,sizeof(b));

...
}
</code></pre>
<p>Dann sieht mein Output nicht so aus wie ich ihn haben will:<br />
Ich bräuchte immer den Output:</p>
<pre><code>texture=1
z=0
texture=1
z=0
....
</code></pre>
<p>und das 16x16x4x4 mal...<br />
ich bekomme aber</p>
<pre><code>texture=1
z=0
texture=0
z=1
texutre=256
z=0
texture=1
z=0
..... usw
</code></pre>
<p>muss ich der struktur oder lesemethode sonst irgendwelche informationen übergeben, damit sie richtig ließt?</p>
<p>mfg hurraa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716177</guid><dc:creator><![CDATA[Hurraa]]></dc:creator><pubDate>Tue, 26 May 2009 16:03:11 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Tue, 26 May 2009 19:28:33 GMT]]></title><description><![CDATA[<p>Du bist hier leider im Falschen Forum, das ist hier das C++ Forum und nicht das C# Forum.Trotzdem ein kleiner Tip, wenn du schon eine Struct nutzt, würde doch nichts dagegen sprechen es vielleicht über den <a href="http://www.google.com/search?hl=de&amp;q=C%23+XMLSerializer&amp;btnG=Suche&amp;lr=" rel="nofollow">XMLSerializer</a> gehen oder spricht da etwas dagegen?</p>
<p>P.S. Ein Mod kann das ja mal verschieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1716352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1716352</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Tue, 26 May 2009 19:28:33 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 11:43:33 GMT]]></title><description><![CDATA[<p>Wieso bin ich hier im falschen Forum? Es funktioniert ja das einlesen der Struktur in !!!C++!!! nicht... der c# auschnitt dient ausschließlich zum Verständnis, weil ich die Maperstellung in c# schreiben werde, weil die grafische komponente beim map creator wegfallen wird.</p>
<p>XmlSerializer bringt mir nicht viel da ich die Daten Binary halten will, weil sie dann auch weniger Speicherplatz benötigen als wenn ich 3000 Tags mit Attributes habe...</p>
<p>mfg Hurraa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717205</guid><dc:creator><![CDATA[Hurraa]]></dc:creator><pubDate>Thu, 28 May 2009 11:43:33 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 11:56:41 GMT]]></title><description><![CDATA[<p>Dein Problem ist Padding. Zum Beispiel deine <code>mapcell</code> Struktur hat nicht 3 Bytes, wie du es wahrscheinlich erwarten würdest, sondern ein paar mehr Bytes. Dies wird gemacht, damit der Prozessor besser damit arbeiten kann, vor allem auch schneller. Selbes gilt auch bei Arrays und anderen Strukturen oder Klassen.</p>
<p>Die beste Lösung bei sowas ist, dass du nicht eine Struktur einliest, sondern jeweils die einzelnen Daten. Also zuerst ein <code>short</code> , dann ein <code>char</code> , daraus machst du eine <code>mapcell</code> , dann wieder ein <code>short</code> , wieder ein <code>char</code> , wieder eine <code>mapcell</code> zusammenstellen, usw. bis du ein <code>mapblock</code> hast, usw. bist du alle <code>mapblock</code> hast.</p>
<p>Beim Einlesen von <code>short</code> solltest du zudem auf die Bytereihenfolge achten. Stichwort: Big-Endian, Little-Endian.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717219</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 28 May 2009 11:56:41 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 12:12:22 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>...<br />
Die beste Lösung bei sowas ist, dass du nicht eine Struktur einliest, sondern jeweils die einzelnen Daten. Also zuerst ein <code>short</code> , dann ein <code>char</code> , daraus machst du eine <code>mapcell</code> , dann wieder ein <code>short</code> , wieder ein <code>char</code> , wieder eine <code>mapcell</code> zusammenstellen, usw. bis du ein <code>mapblock</code> hast, usw. bist du alle <code>mapblock</code> hast.</p>
<p>Beim Einlesen von <code>short</code> solltest du zudem auf die Bytereihenfolge achten. Stichwort: Big-Endian, Little-Endian.</p>
<p>Grüssli</p>
</blockquote>
<p>Nur als Nebenbemerkung: Man DARF Daten auch lesbar in Dateien schreiben (und lesen) ... das ist weder verboten noch per se zu langsam, hat aber eine Menge Vorteile (gerade bzgl. Plattformunabhängigkeit, Versionierung und Debugging).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717231</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 28 May 2009 12:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 12:29:06 GMT]]></title><description><![CDATA[<p>Danke für die Antworten. Könntet ihr mir noch Big-Endian und Little-Endian erläutern?</p>
<p>mfg Hurraa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717240</guid><dc:creator><![CDATA[Hurraa]]></dc:creator><pubDate>Thu, 28 May 2009 12:29:06 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 12:42:06 GMT]]></title><description><![CDATA[<p>Hurraa schrieb:</p>
<blockquote>
<p>Danke für die Antworten. Könntet ihr mir noch Big-Endian und Little-Endian erläutern?</p>
</blockquote>
<p>das betrifft dich nur, wenn du dein prog für unterschiedliche maschinen bauen willst. wenn du bei normalen pcs bleiben willst, isses egal, denn alle normalen pcs haben die selbe endianess.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717253</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 28 May 2009 12:42:06 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 12:55:52 GMT]]></title><description><![CDATA[<p>Hm eine letzte Frage habe ich noch:</p>
<p>Wie sieht nun das Einlesen von den einzelnen Daten aus?<br />
Weil mein folgender code funktioniert nicht:</p>
<pre><code>mapcell mc;

ifstream in(&quot;test.map&quot;,ios::binary);
in &gt;&gt; mc.texid;
in &gt;&gt; mc.z;
...
in.close();
</code></pre>
<p>Selbst die ersten Zahlen sind weit außerhalb des möglichen wertebereichs wie -1239540 oder 129054...</p>
<p>Habt ihr vielleicht ein gutes Tutorial, das io WIRKLICH abdeckt?</p>
<p>mfg Hurraa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717266</guid><dc:creator><![CDATA[Hurraa]]></dc:creator><pubDate>Thu, 28 May 2009 12:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 13:47:23 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nochmal mein Tipp:</p>
<p>Hurraa schrieb:</p>
<blockquote>
<p>...</p>
<pre><code>ifstream in(&quot;test.map&quot;,ios::binary);
</code></pre>
<p>...</p>
</blockquote>
<p>=&gt;</p>
<pre><code class="language-cpp">ifstream in(&quot;test.map&quot;);
</code></pre>
<p>(inkl. der cpp-Tags)<br />
... natürlich auch beim Schreiben.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717296</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 28 May 2009 13:47:23 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 15:29:18 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/21070">@Hurraa</a>,<br />
Über <code>operator &gt;&gt;</code> und <code>operator &lt;&lt;</code> liest und schreibt man normalerweise nur Text. Wenn du binär lesen und schreiben willst, dann musst du die Methoden <code>write</code> und <code>read</code> nehmen. Wie du es vorhin auch gemacht hast.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a>,<br />
Wenn er die Dateien binär bearbeiten will, dann ist <code>std::ios::binary</code> dringend erforderlich.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717376</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 28 May 2009 15:29:18 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 16:17:04 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>...Wenn er die Dateien binär bearbeiten will, ...</p>
</blockquote>
<p>Klar - mein Vorschlag zielte ja auch genau darauf ab, dass er sie NICHT binär bearbeiten sollte.</p>
<p>Hurraa schrieb:</p>
<blockquote>
<p>...<br />
XmlSerializer bringt mir nicht viel da ich die Daten Binary halten will, weil sie dann auch weniger Speicherplatz benötigen als wenn ich 3000 Tags mit Attributes habe...</p>
</blockquote>
<p>Da würde ich sehr genau prüfen, ob dieses Argument angesichts der Nachteile (frickeliges, sehr plattform- und Compilerababhängiges Lesen und Schreiben, komplizierte Fehlersuche, ...) wirklich zieht. Natürlich gibt es Anwendungsfälle, bei denen es auf jedes Terabyte Plattenplatz ankommt - aber in der Praxis sind es seeehr viel weniger als der geneigte Entwickler es meint.</p>
<p>Oder sagen wir mal so: So, wie es bislang angefangen ist, wird es vermutlich noch längere Zeit weitergehen und immer wieder kommen ... Zeit und Nerven, die man evtl. an anderen Ecken des Programms besser brauchen kann.</p>
<p>Wenn man natürlich Daten von außen angeliefert bekommt, hat man halt keine Wahl ... aber da würde ich sehr genau auf eine saubere und vom &quot;Fachcode&quot; getrennte Einleseschnittstelle achten.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717402</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 28 May 2009 16:17:04 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Thu, 28 May 2009 16:41:15 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Klar - mein Vorschlag zielte ja auch genau darauf ab, dass er sie NICHT binär bearbeiten sollte.</p>
</blockquote>
<p>Was habt ihr eigentlich alle gegen binäre Formate? Es gibt Einsatzzwecke für beides und Vor- und Nachteile hat es oft bei beiden in etwa gleich viele.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717418</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 28 May 2009 16:41:15 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Fri, 29 May 2009 18:41:42 GMT]]></title><description><![CDATA[<p>Ich persönlich benutze meist einfache Textdateien, da</p>
<ul>
<li>die Handhabung relativ einfach ist und meiner Ansicht nach weniger Fehlerquellen beinhaltet</li>
<li>ich die Dateien auch mit dem Text-Editor anschauen und verändern kann (finde ich teilweise noch praktisch)</li>
<li>bei mir semantisches Schreiben völlig ausreicht und Speicherverbrauch bzw. 1:1-binäres Schreiben nicht relevant ist</li>
<li>die Dateien auch weiterverwendet werden können, sollte man etwas an seinen Strukturen ändern; Anpassungen der Dateien finde ich transparenter</li>
<li>man keine Rücksicht auf compilerabhängige Dinge wie Padding, VTable etc. nehmen muss</li>
<li>ich den objektorientierten <code>operator&lt;&lt;</code> bzw. <code>operator&gt;&gt;</code> gleich dazu nutzen kann, um ganze Klassen zu lesen oder schreiben</li>
</ul>
<p>Aber wie angetönt hat binäres Schreiben/Lesen genauso seine Vorteile, ich wollte nur mal meine Sichtweise präsentieren. <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718089</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 29 May 2009 18:41:42 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Fri, 29 May 2009 19:05:10 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ich persönlich benutze meist einfache Textdateien, da...</p>
</blockquote>
<p>geht mir auch so.<br />
und im entwurf lasse ich von vorn herein immer offen, noch zusätzlich einen BinaryWriter/Reader anzubieten, wenn mal zeit bleibt und sich bedarf andeutet, aber nötig isses eigentlich nie. hihi.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718094</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 29 May 2009 19:05:10 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Mon, 01 Jun 2009 18:48:16 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>...<br />
Was habt ihr eigentlich alle gegen binäre Formate? ...</p>
</blockquote>
<p>Ich habe gegen sie, dass sie üblicherweise die erste und einzige Idee von Anfängern ist, die sich mühsam die Finger damit brechen, das Forum mit Fragen überschwemmen und am Ende darüber klagen, wie schrecklich doch C++ ist und die Welt mit grauenhaftem und unportablem Code überziehen - und das ganze vollkommen überflüssigerweise. <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>
<p>Gaaaanz großer Schwerpunkt bei &quot;Anfänger&quot;.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719259</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 01 Jun 2009 18:48:16 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Tue, 02 Jun 2009 08:04:21 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>die Handhabung relativ einfach ist und meiner Ansicht nach weniger Fehlerquellen beinhaltet</p>
</blockquote>
<p>Gilt auch für ein gut dokumentiertes Binärformate <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>
<p>Nexus schrieb:</p>
<blockquote>
<p>ich die Dateien auch mit dem Text-Editor anschauen und verändern kann (finde ich teilweise noch praktisch)</p>
</blockquote>
<p>Ein gut dokumentiertes Binärformat kann man mit einem Hexeditor anschauen und verändern. Wobei ich oft Binärformate bewusst wähle, damit man sie nicht so einfach verändern kann. Vor allem macht es auch nicht immer Sinn, dass man im File herumpfuschen können soll <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>
<p>Nexus schrieb:</p>
<blockquote>
<p>bei mir semantisches Schreiben völlig ausreicht und Speicherverbrauch bzw. 1:1-binäres Schreiben nicht relevant ist</p>
</blockquote>
<p>1:1 binäres Schreiben wäre ein fataler Fehler. In einem Binärformat kannst du genauso semantisch schreiben. Du musst nur entsprechende Strukturen definieren, halt ein Format erfinden oder ein bereits bekanntes nehmen.</p>
<p>Ich habe erst letztens ein Binärformat erfunden. Hat eine Jumptable, erlaubt verschiedene Datengrössen, hat rohe Daten und Elementdaten. Man kann alles schön in Elemente aufteilen und dank der Jumptable kann man gleich an die richtige Stelle im File springen, wenn man nur gewisse Elemente lesen möchte.</p>
<p>Probier mal eine Jumptable in einem Textfile zu machen <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="😃"
    /></p>
<p>Nexus schrieb:</p>
<blockquote>
<p>die Dateien auch weiterverwendet werden können, sollte man etwas an seinen Strukturen ändern; Anpassungen der Dateien finde ich transparenter</p>
</blockquote>
<p>Ist auch absolut kein Problem bei einem Binärformat. Natürlich nur dann, wenn du eine entsprechende Dokumentation hast und das Format entsprechend aufgebaut ist, dass es dies erlaubt. 1:1 schreiben wäre natürlich völlig verkehrt <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>
<p>Nexus schrieb:</p>
<blockquote>
<p>man keine Rücksicht auf compilerabhängige Dinge wie Padding, VTable etc. nehmen muss</p>
</blockquote>
<p>Wenn du nicht 1:1 schreibst und alles korrekt dokumentiert hast, dann ist das auch beim binären Schreiben kein Problem. Vor allem solltest du dann aber nicht ganze <code>struct</code> probieren zu schreiben, sondern wie bei einem Textfile auch, Element für Element.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>ich den objektorientierten <code>operator&lt;&lt;</code> bzw. <code>operator&gt;&gt;</code> gleich dazu nutzen kann, um ganze Klassen zu lesen oder schreiben</p>
</blockquote>
<p>Kannst du auch verwenden, musst dir nur einen Binarystream erstellen. Sowas geht relativ einfach und kann man wiederverwenden <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 />
Allerdings bevorzuge ich meinstens sowieso nicht die Streamoperatoren, auch nicht bei Text. Bzw. ich verwende sie oft nur für Debugausgaben.</p>
<p>Ich setze die Ausgabe lieber in eine eigene Klasse, welche dann weitere Dinge steuern kann. Die Streamoperatoren sind mir oft zu simpel.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a>,<br />
Ok, da kann man nur zustimmen. Den Fehler hatte ich als Anfänger auch gemacht <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="🙂"
    /><br />
Wobei ich mich zwar aufgeregt und die Finger gebrochen habe, aber trotzdem weiter von C++ fasziniert war und mich weiterentwickelt habe <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>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719427</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 02 Jun 2009 08:04:21 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen lesen funktioniert nicht on Tue, 02 Jun 2009 11:24:32 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>...<br />
1:1 binäres Schreiben wäre ein fataler Fehler. ...</p>
</blockquote>
<p>Ist aber genau das, was (gerade Anfänger) zu 99,99% meinen und machen.<br />
Ansonsten gibt es auch kaum noch Unterschiede zwischen einem &quot;Serialisierungsformat&quot;, das nur druckbare Zeichen verwendet und einem, das das nicht tut....</p>
<p>Das Wesentliche meiner Kritik an &quot;Binärschreiben&quot; zielt genau auf das &quot;1:1-Format&quot;.<br />
(OK, wenn man in jedem Txt-Editor lesen/bearbeiten kann, ist das nett, aber längst nicht so kritisch wie die anderen Aspekte)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1719539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1719539</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 02 Jun 2009 11:24:32 GMT</pubDate></item></channel></rss>