<?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[std::vector in struct aus datei lesen]]></title><description><![CDATA[<p>Hi<br />
hier die Ausgangslage:</p>
<p>Ich habe eine Struct in einer Datei geschrieben:</p>
<pre><code class="language-cpp">struct C3DBone
	{
		float pos[3];
		float rot[3];

		vector&lt;C3DKF&gt; poskfs;
	};
</code></pre>
<p>das einzige Problem dabei ist nur, wie ich diese struct wieder auslesen kann.<br />
Eigentlich ja so:</p>
<pre><code class="language-cpp">C3DBone temp;
fread(&amp;temp,sizeof(C3DBone),1,file);
</code></pre>
<p>nun geht das aber nicht, weil die Struct eine dynamische arrays enthält (vector).<br />
Angenommen in der Struktur in der Datei ist dieser Vector 5 elemente groß.<br />
der vector in &quot;temp&quot; ist aber 0 elemente groß.<br />
Da hab ich mir gedacht, ich erweitere den vector in &quot;temp&quot; :</p>
<pre><code class="language-cpp">for(int i=0;i&lt;maxvec;i++)
{
    temp.poskf.pushback(invalidelement);
}
</code></pre>
<p>jetzt müsste eigentlich genügend platz für den vector in der datei da sein, ist es aber nicht. es gibt ein runtime-error: unhandled exeption.<br />
hat jmd eine idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218453/std-vector-in-struct-aus-datei-lesen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 00:37:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218453.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Jul 2008 08:02:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::vector in struct aus datei lesen on Mon, 21 Jul 2008 08:02:15 GMT]]></title><description><![CDATA[<p>Hi<br />
hier die Ausgangslage:</p>
<p>Ich habe eine Struct in einer Datei geschrieben:</p>
<pre><code class="language-cpp">struct C3DBone
	{
		float pos[3];
		float rot[3];

		vector&lt;C3DKF&gt; poskfs;
	};
</code></pre>
<p>das einzige Problem dabei ist nur, wie ich diese struct wieder auslesen kann.<br />
Eigentlich ja so:</p>
<pre><code class="language-cpp">C3DBone temp;
fread(&amp;temp,sizeof(C3DBone),1,file);
</code></pre>
<p>nun geht das aber nicht, weil die Struct eine dynamische arrays enthält (vector).<br />
Angenommen in der Struktur in der Datei ist dieser Vector 5 elemente groß.<br />
der vector in &quot;temp&quot; ist aber 0 elemente groß.<br />
Da hab ich mir gedacht, ich erweitere den vector in &quot;temp&quot; :</p>
<pre><code class="language-cpp">for(int i=0;i&lt;maxvec;i++)
{
    temp.poskf.pushback(invalidelement);
}
</code></pre>
<p>jetzt müsste eigentlich genügend platz für den vector in der datei da sein, ist es aber nicht. es gibt ein runtime-error: unhandled exeption.<br />
hat jmd eine idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1550694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1550694</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Mon, 21 Jul 2008 08:02:15 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector in struct aus datei lesen on Mon, 21 Jul 2008 09:01:54 GMT]]></title><description><![CDATA[<p>Warum packst du das Struct eigentlich in eine externe Datei? Warum codest du es nicht direkt mit in dein Projekt rein?Gibt es da einen tieferen Sinn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1550749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1550749</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Mon, 21 Jul 2008 09:01:54 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector in struct aus datei lesen on Mon, 21 Jul 2008 10:05:06 GMT]]></title><description><![CDATA[<p>ein export-plugin für milkshape3D (3D Model Programm) exportiert ja in eine datei.<br />
Also müssen die Structs, die das Model (Triangles,Vertices,Textures,...) enthalten ja in eine datei geschrieben werden.<br />
und dann werden sie später wieder von einen OpenGl programm ausgelesen und gerendert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1550800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1550800</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Mon, 21 Jul 2008 10:05:06 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector in struct aus datei lesen on Mon, 21 Jul 2008 14:34:49 GMT]]></title><description><![CDATA[<p>Warum schreibst du dir nicht einfach noch nen operator &gt;&gt; und &lt;&lt;?<br />
Über deine Lösung gibts glaube scho Millionen Beiträge, die immer auf das gleiche hinauslaufen:<br />
Compilerabhängig, wie das wird - das heißt, wenn man einmal das Programm mit xyz compilert und die Datei angelegt wird, ist nicht garantiert, dass das Programm, was mit abc compiliert wurde, die Datei richtig interpretiert...</p>
<p>Überhaupt sieht das, was du hier schreibst eher nach C aus... [fread !!!]</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551014</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 21 Jul 2008 14:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector in struct aus datei lesen on Tue, 22 Jul 2008 04:21:34 GMT]]></title><description><![CDATA[<p>Wenn du den Inhalt eines Vector serialisieren willst, musst du jedes Element (C3DKF) (sofern dieses &quot;nur&quot; POD typen enthält) einzeln binär speichern. zudem solltest du die anzahl der elemente mit abspeichern.</p>
<pre><code class="language-cpp">struct C3DBone
    {
        float pos[3];
        float rot[3];

        vector&lt;C3DKF&gt; poskfs;

    };

void serializeBone(const C3dBone &amp;oScr){
.....

   fread(&amp;oScr.pos,sizeof(oScr.pos),1,file);
   fread(&amp;oScr.rot,sizeof(oScr.rot),1,file);

   fread(&amp;poskfs.size(),sizeof(poskfs.size()),1,file);

   for(size_t i=0; i&lt; poskfs.size(); ++i){
     fread(&amp;poskfs[i].INHALT,sizeof(poskfs[i].INHALT),1,file);
.
.
.

   }

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1551319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551319</guid><dc:creator><![CDATA[HumanCompiler]]></dc:creator><pubDate>Tue, 22 Jul 2008 04:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector in struct aus datei lesen on Tue, 22 Jul 2008 21:46:43 GMT]]></title><description><![CDATA[<p>ok das mit dem serialisieren ist eine gute alternative, so wirds gemacht, danke ^^<br />
ich hab mich nur gefragt, wie es auch anders gehen könnte. aber sch****egal: hauptsache es geht <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="😉"
    /> danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552013</guid><dc:creator><![CDATA[Fachmann]]></dc:creator><pubDate>Tue, 22 Jul 2008 21:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector in struct aus datei lesen on Wed, 23 Jul 2008 03:04:49 GMT]]></title><description><![CDATA[<p>servus fachmann,</p>
<p>serialisierung wird so gemacht, es wird auf basis von POD typen der block gespeichert. Normalerweise leitet man die Klasse welche serialisiert werden soll von einer eigenen oder vorahnden serialisation klasse ab, welche eine extras methode enthält (oder std:stream &quot;&lt;&lt;operator&quot;) die du in deiner klasse überschreiben musst. Diese Methode hat als parameter den datenziel/soruce stream darin speicehrt du binär die dateinen deienr klasse.</p>
<p>PASS ABER AUF PADDING AUF...</p>
<p>und nim stl stream stadt C FILE zeugs...</p>
<pre><code class="language-cpp">fstream File(&quot;FILE.dat&quot;, ios::out|ios::binary|ios::in);
 File.write((const char*)&amp;fYOURDATA, sizeof(YOURDATA));
 File.close();   // Datei schließen
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1552074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552074</guid><dc:creator><![CDATA[HumanCompiler]]></dc:creator><pubDate>Wed, 23 Jul 2008 03:04:49 GMT</pubDate></item></channel></rss>