<?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[struct speichern]]></title><description><![CDATA[<p>hallo,</p>
<p>wie kann ich am Besten folgendes struct in einer Datei speichern?</p>
<pre><code>struct foo {
 int     i1;
 string  str1;
 string  str2;
 bool    b1;
}
</code></pre>
<p>Ich habe versucht das ganze zu speichern. Alle Werte bis auf die Stringwerte werden richtig gespeichert und wieder geöffnet.<br />
Ich denke, die Strings werden nicht richtig erkannt, da die Länge nicht vorgegeben ist und damit keine Typisierung möglich ist.<br />
wenn ich allerdings versuche eine Länge vorzugeben, z.B. folgendermaßen:</p>
<pre><code>struct foo {
 int     i1;
 char*   str1[63];
 char*   str2[63];
 bool    b1;
}
</code></pre>
<p>dann bekomme ich Fehlermeldungen bei der Zuweisung der Stringwerte.</p>
<pre><code>[C++ Fehler] uMain.cpp(56): E2277 L-Wert erwartet
</code></pre>
<p>die zuweisung sieht dabei folgendermaßen aus:</p>
<pre><code>string bla = &quot;hallo&quot;;
foo.str1 = bla;
</code></pre>
<p>Was kann ich nun also machen, damit entweder die Zuweisung funktioniert oder ich den String so speichern kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/104798/struct-speichern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 03:22:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/104798.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Mar 2005 12:18:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to struct speichern on Wed, 23 Mar 2005 12:18:18 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>wie kann ich am Besten folgendes struct in einer Datei speichern?</p>
<pre><code>struct foo {
 int     i1;
 string  str1;
 string  str2;
 bool    b1;
}
</code></pre>
<p>Ich habe versucht das ganze zu speichern. Alle Werte bis auf die Stringwerte werden richtig gespeichert und wieder geöffnet.<br />
Ich denke, die Strings werden nicht richtig erkannt, da die Länge nicht vorgegeben ist und damit keine Typisierung möglich ist.<br />
wenn ich allerdings versuche eine Länge vorzugeben, z.B. folgendermaßen:</p>
<pre><code>struct foo {
 int     i1;
 char*   str1[63];
 char*   str2[63];
 bool    b1;
}
</code></pre>
<p>dann bekomme ich Fehlermeldungen bei der Zuweisung der Stringwerte.</p>
<pre><code>[C++ Fehler] uMain.cpp(56): E2277 L-Wert erwartet
</code></pre>
<p>die zuweisung sieht dabei folgendermaßen aus:</p>
<pre><code>string bla = &quot;hallo&quot;;
foo.str1 = bla;
</code></pre>
<p>Was kann ich nun also machen, damit entweder die Zuweisung funktioniert oder ich den String so speichern kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751038</guid><dc:creator><![CDATA[mickmack]]></dc:creator><pubDate>Wed, 23 Mar 2005 12:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to struct speichern on Wed, 23 Mar 2005 12:23:00 GMT]]></title><description><![CDATA[<p>Das Problem ist, dass string eine komplexe Klasse ist. Da wird zwar schon was gespeichert, aber das muss nicht unbedingt richtig sein.</p>
<p>Das Einzige was du in dem Fall tun kannst, ist diesen Struct händisch zu speichern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751042</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Wed, 23 Mar 2005 12:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to struct speichern on Wed, 23 Mar 2005 12:47:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>C-Strings mit fester Länge werden so definiert (sozusagen als Array)</p>
<pre><code class="language-cpp">char   str1[63];
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751070</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 23 Mar 2005 12:47:52 GMT</pubDate></item><item><title><![CDATA[Reply to struct speichern on Wed, 23 Mar 2005 20:22:05 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct foo Teststruktur;  //Strukturvariable deklarieren
  FILE *fp;
  if(SaveDialog1-&gt;Execute())
  {
    fp = fopen(SaveDialog1-&gt;FileName.c_str(), &quot;wb&quot;);
    if(fp == NULL)
    {
      Application-&gt;MessageBox(&quot;Datei nicht geöffnet!&quot;, &quot;Fehler&quot;, MB_OK);
    }
    else
    {
      fwrite(Teststruktur, sizeof (foo), 1, fp);
      fclose(fp);
    }
  }
</code></pre>
<p>So müsste es gehen!<br />
mfg rzwodzwo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751215</guid><dc:creator><![CDATA[rzwodzwo]]></dc:creator><pubDate>Wed, 23 Mar 2005 20:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to struct speichern on Thu, 24 Mar 2005 07:51:51 GMT]]></title><description><![CDATA[<p>Danke für das Beispiel und auch die restlichen Antworten.<br />
Zum Beispiel: So habe ich es eigentlich auch gelöst. Mein Problem sind halt die Strings in dem struct, durch die eine genaue Größe des structs nicht berechnet werden kann.<br />
Mein Frage müsste daher eher lauten:</p>
<p><strong>Wie weise ich einem chararray einen stringwert zu?</strong></p>
<p>Wie gesagt bei folgendem bekomme den Fehler E2277</p>
<pre><code>char* chr[63] = NULL;
string str = &quot;foo&quot;;

chr = str;

----&gt;&gt;&gt;[C++ Fehler] uMain.cpp(56): E2277 L-Wert erwartet
</code></pre>
<p>Wenn ich den String in das chararray bekomme, dann ist mein Problem gelöst <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/751423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751423</guid><dc:creator><![CDATA[mickmack]]></dc:creator><pubDate>Thu, 24 Mar 2005 07:51:51 GMT</pubDate></item><item><title><![CDATA[Reply to struct speichern on Thu, 24 Mar 2005 08:01:10 GMT]]></title><description><![CDATA[<p>strncpy ist dein Freund.</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751430</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 24 Mar 2005 08:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to struct speichern on Thu, 24 Mar 2005 08:05:51 GMT]]></title><description><![CDATA[<p>bin gerade erst mit c++ angefangen und hab vorher nur ansi-c gemacht.</p>
<p>wenn ich strncpy nutze, muss ich dann in c++ auch den speicher reservieren oder wird das vom compiler erledigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751432</guid><dc:creator><![CDATA[mickmack]]></dc:creator><pubDate>Thu, 24 Mar 2005 08:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to struct speichern on Thu, 24 Mar 2005 08:10:37 GMT]]></title><description><![CDATA[<p>Achda fällt mir auf: Lies nochmals akaris Posting.</p>
<p>Wenn du früher C gemacht hast, dann weisst du ja, dass char foo[65]; platz für 64 Zeichen + 0 Abschluss auf dem Stack reserviert, den du dann mit memset(foo, 0, 65) noch initialisieren solltest.</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751435</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 24 Mar 2005 08:10:37 GMT</pubDate></item><item><title><![CDATA[Reply to struct speichern on Thu, 24 Mar 2005 09:46:02 GMT]]></title><description><![CDATA[<p>höchstwahrscheinlich stelle ich mich nur zu blöd an, aber das mit dem strncpy() bekomme ich nicht ganz hin.<br />
Ich habe nun folgendes probiert</p>
<pre><code>char chr[64];
string str = &quot;Hallo Welt&quot;;

strncpy(chr,str,64);

-------&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;[C++ Fehler] uDataField.cpp(78): E2034 Konvertierung von 'string' nach 'const char *' nicht möglich
</code></pre>
<p>Dabei kommt halt die angegebene Fehlermeldung. Was mache ich denn falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751530</guid><dc:creator><![CDATA[mickmack]]></dc:creator><pubDate>Thu, 24 Mar 2005 09:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to struct speichern on Thu, 24 Mar 2005 09:48:48 GMT]]></title><description><![CDATA[<p>Was für einen Parameter erwartet strncpy denn?<br />
Kannst du asu der kojmplexen Klasse &quot;string&quot; diesen Datentypen irgendwie extrahieren?</p>
<p>Ausserdem überschreibst du mit deinem Code gegebenenfalls das abschliessende 0 des Puffers... und initialisiert hast du ihn auch nicht...</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/751533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/751533</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 24 Mar 2005 09:48:48 GMT</pubDate></item></channel></rss>