<?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[Struktur in Datei speichern]]></title><description><![CDATA[<p>Hallo ich habe 2 Probleme beim binären speichern meiner Datenstruktur in eine Datei.</p>
<p>Die Struktur sieht wie folgt aus und stellt ein Array aus Frames dar, welches zu jedem Zeitschritt eine beliebige Anzahl an Markern aufnehmen kann:</p>
<pre><code class="language-cpp">typedef struct{
  unsigned long id;          
  float         quality;
  Wm3::Vector3f      pos; 
} Marker;

int main() 
{

const size_t numOfFrames = 3;

vector&lt;Marker&gt; frame[numOfFrames];

...
}
</code></pre>
<p>Nun hatte ich mir überlegt die Struktur folgendermaßen abzuspeichern:</p>
<pre><code class="language-cpp">fstream file;

file.open(&quot;Ausgabe.xyz&quot;, ios::out || ios_base::binary);
file.write((char*)numOfFrames, sizeof(size_t));     // Problem 2

for (int x=0; x &lt; numOfFrames ;x++) {
	file.write((char*)frame[x].size(), sizeof(size_t));
	for (int y=0; y &lt; frame[x].size(); y++) {
	        file.write((char*)(frame[x][y]), sizeof(Marker));	// Probelm 1
	}
}

file.close();
</code></pre>
<p>Erstes Problem ist, ich bekomme einen Compilerfehler:</p>
<pre><code>error C2440: 'type cast' : cannot convert from 'Marker' to 'char *'
1&gt;        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
</code></pre>
<p>Das zweite Problem trat auf, als ich das erste Problem aus-kommentiert habe und das programm gedebuggt hab. Und zwar tritt hier der fehler auf, wenn ich versuche numOfFrames in die Datei zu schreiben. Der debugger zeigt dabei den fehler in der datei iosfwd an, in der covert-funktion:</p>
<pre><code class="language-cpp">static int_type __CLRCALL_OR_CDECL to_int_type(const _Elem&amp; _Ch)
		{	// convert character to metacharacter
		return ((unsigned char)_Ch);
		}
</code></pre>
<p>Ich hoffe ich konnte die beiden Fehler verständlich erklären, sodass mir vielleicht jemand tips zum beheben nennen kann.</p>
<p>Danke schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177947/struktur-in-datei-speichern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 04:48:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177947.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Apr 2007 15:29:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struktur in Datei speichern on Thu, 05 Apr 2007 15:29:59 GMT]]></title><description><![CDATA[<p>Hallo ich habe 2 Probleme beim binären speichern meiner Datenstruktur in eine Datei.</p>
<p>Die Struktur sieht wie folgt aus und stellt ein Array aus Frames dar, welches zu jedem Zeitschritt eine beliebige Anzahl an Markern aufnehmen kann:</p>
<pre><code class="language-cpp">typedef struct{
  unsigned long id;          
  float         quality;
  Wm3::Vector3f      pos; 
} Marker;

int main() 
{

const size_t numOfFrames = 3;

vector&lt;Marker&gt; frame[numOfFrames];

...
}
</code></pre>
<p>Nun hatte ich mir überlegt die Struktur folgendermaßen abzuspeichern:</p>
<pre><code class="language-cpp">fstream file;

file.open(&quot;Ausgabe.xyz&quot;, ios::out || ios_base::binary);
file.write((char*)numOfFrames, sizeof(size_t));     // Problem 2

for (int x=0; x &lt; numOfFrames ;x++) {
	file.write((char*)frame[x].size(), sizeof(size_t));
	for (int y=0; y &lt; frame[x].size(); y++) {
	        file.write((char*)(frame[x][y]), sizeof(Marker));	// Probelm 1
	}
}

file.close();
</code></pre>
<p>Erstes Problem ist, ich bekomme einen Compilerfehler:</p>
<pre><code>error C2440: 'type cast' : cannot convert from 'Marker' to 'char *'
1&gt;        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
</code></pre>
<p>Das zweite Problem trat auf, als ich das erste Problem aus-kommentiert habe und das programm gedebuggt hab. Und zwar tritt hier der fehler auf, wenn ich versuche numOfFrames in die Datei zu schreiben. Der debugger zeigt dabei den fehler in der datei iosfwd an, in der covert-funktion:</p>
<pre><code class="language-cpp">static int_type __CLRCALL_OR_CDECL to_int_type(const _Elem&amp; _Ch)
		{	// convert character to metacharacter
		return ((unsigned char)_Ch);
		}
</code></pre>
<p>Ich hoffe ich konnte die beiden Fehler verständlich erklären, sodass mir vielleicht jemand tips zum beheben nennen kann.</p>
<p>Danke schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260224</guid><dc:creator><![CDATA[Shoo]]></dc:creator><pubDate>Thu, 05 Apr 2007 15:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur in Datei speichern on Thu, 05 Apr 2007 15:34:06 GMT]]></title><description><![CDATA[<p>Wieso machst du dir eigentlich die Mühe den beiden for-Schleifen?</p>
<pre><code class="language-cpp">file.write((char*)&amp;frame, sizeof(frame)*numberOfFrames);
</code></pre>
<p>(habs jetzt nicht getestet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260229</guid><dc:creator><![CDATA[Dr. C++]]></dc:creator><pubDate>Thu, 05 Apr 2007 15:34:06 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur in Datei speichern on Thu, 05 Apr 2007 15:41:08 GMT]]></title><description><![CDATA[<p>du versuchst da andauernd irgendwelche <strong>_werte_an_sich_</strong> in char* zeiger umzuwandeln. Stattdessen musst du <strong>addressen deiner werte</strong> in <em><em>char</em> zeiger</em>* umwandeln</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260234</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Thu, 05 Apr 2007 15:41:08 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur in Datei speichern on Thu, 05 Apr 2007 17:36:59 GMT]]></title><description><![CDATA[<p>Puuh, vielen dank. Das war ja nun wirklich ein simpler fehler. Nun funktioniert alles perfekt. Danke nochmal!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260300</guid><dc:creator><![CDATA[Shoo]]></dc:creator><pubDate>Thu, 05 Apr 2007 17:36:59 GMT</pubDate></item></channel></rss>