<?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[Lesen aus Binärdatei]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich lese das erste mal aus binären Dateien. Ich hab eine Frage dazu, wie das funktioniert. Zuerst dachte ich, das ginge nur indem ich structs benutze. Dann hab ich gemerkt, das es auch mit Klassen geht.</p>
<p>Dann hab ich gemerkt, das es auch geht wenn die Klassen funktionen besitzt. Oder wenn die Klasse mehr Variablen besitzt als gelesen werden, solange die, die gelesen werden &quot;oben&quot; stehen:</p>
<pre><code class="language-cpp">namespace Q3BSP
{
	class Header
	{
		public:
			int machwas()//geht
			{
				return(23);
			}
int foo;//geht nicht mehr
			char magic[4]; // Identifies the map file (must be &quot;IBSP&quot;)
			int version; // Version of the map file (Quake3 uses version 46)
			int uhuh;//geht
	};
}
</code></pre>
<pre><code class="language-cpp">Q3BSP::Header header;
	fread(&amp;header, 1, sizeof(Q3BSP::Header), fp);
</code></pre>
<p>Wieso ist das so? Kann mir das jemand genauer erklären? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208173/lesen-aus-binärdatei</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 13:44:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208173.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Mar 2008 17:16:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lesen aus Binärdatei on Sat, 15 Mar 2008 17:16:47 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich lese das erste mal aus binären Dateien. Ich hab eine Frage dazu, wie das funktioniert. Zuerst dachte ich, das ginge nur indem ich structs benutze. Dann hab ich gemerkt, das es auch mit Klassen geht.</p>
<p>Dann hab ich gemerkt, das es auch geht wenn die Klassen funktionen besitzt. Oder wenn die Klasse mehr Variablen besitzt als gelesen werden, solange die, die gelesen werden &quot;oben&quot; stehen:</p>
<pre><code class="language-cpp">namespace Q3BSP
{
	class Header
	{
		public:
			int machwas()//geht
			{
				return(23);
			}
int foo;//geht nicht mehr
			char magic[4]; // Identifies the map file (must be &quot;IBSP&quot;)
			int version; // Version of the map file (Quake3 uses version 46)
			int uhuh;//geht
	};
}
</code></pre>
<pre><code class="language-cpp">Q3BSP::Header header;
	fread(&amp;header, 1, sizeof(Q3BSP::Header), fp);
</code></pre>
<p>Wieso ist das so? Kann mir das jemand genauer erklären? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474934</guid><dc:creator><![CDATA[bibabutzemann3242]]></dc:creator><pubDate>Sat, 15 Mar 2008 17:16:47 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus Binärdatei on Sat, 15 Mar 2008 18:05:14 GMT]]></title><description><![CDATA[<p>Wenn du ein Objekt deiner Klasse Header erzeugst, wird ein zusammenhängender Speicherbereich reserviert, der groß genug ist, um alle membervariablen abzuspeichern. Die Reihenfolge der Variablen ergibt sich nur aus der Reihenfolge der Deklarationen in der Klasse.</p>
<p>Die Funktion fread macht nichts anderes, als eine bestimmte Anzahl Bytes aus einer Datei in den angegebenen Speicherbereich zu kopieren. Fread kennt die Struktur der Datei oder der Klasse nicht. Wenn du jetzt eine Klasse definierst, in der die Membervariablen in der Reihenfolge deklariert sind, wie sie auch in der Datei stehen, funktioniert das Lesen natürlich. Wenn aber in der Klasse vor den Variablen in die du lesen möchtest schon Variablendeklarationen sind, verschiebt sich das ganze natürlich. Dann hast du z.B. das, was in char[4] magic stehen sollte am Ende in foo stehen, version in magic usw.</p>
<p>Methodendeklarationen und statische Variablen haben darauf natürlich keinen Einfluss, weil diese ja nicht in jedes erzeugte Objekt kopiert werden, sondern nur einmal im Speicher existieren.</p>
<p>Ich hoffe, meine Erklärung war einigermaßen verständlich und konnte dir weiterhelfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474955</guid><dc:creator><![CDATA[zero_gravity]]></dc:creator><pubDate>Sat, 15 Mar 2008 18:05:14 GMT</pubDate></item></channel></rss>