<?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[Maps in Datei abspeichern]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich hatte versucht, eine Map in eine Datei abzuspeichern.<br />
Leider hat dieser Versuch folgende Compilermeldung ausgegeben:</p>
<p>1&gt;------ Erstellen gestartet: Projekt: Adressbuch, Konfiguration: Debug Win32 ------<br />
1&gt; int main ().cpp<br />
1&gt;d:\meine projekte\visual c++\adressbuch\adressbuch\int main ().cpp(66): error C2664: 'std::basic_ostream&lt;_Elem,_Traits&gt;::write': Konvertierung des Parameters 1 von 'std::map&lt;_Kty,_Ty&gt; *' in 'const char *' nicht möglich<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Elem=char,<br />
1&gt; _Traits=std::char_traits&lt;char&gt;<br />
1&gt; ]<br />
1&gt; and<br />
1&gt; [<br />
1&gt; _Kty=std::string,<br />
1&gt; _Ty=int<br />
1&gt; ]<br />
1&gt; Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.<br />
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========</p>
<p>der betroffene Quelltextausschnitt sieht wie folg aus:</p>
<pre><code class="language-cpp">Output.open (&quot;adressbuch.db&quot;, ios::binary);
				Output.write (&amp;adressen_map, sizeof (adressen_map));
				Output.close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/291810/maps-in-datei-abspeichern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 13:03:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291810.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Aug 2011 18:33:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sat, 27 Aug 2011 18:33:49 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich hatte versucht, eine Map in eine Datei abzuspeichern.<br />
Leider hat dieser Versuch folgende Compilermeldung ausgegeben:</p>
<p>1&gt;------ Erstellen gestartet: Projekt: Adressbuch, Konfiguration: Debug Win32 ------<br />
1&gt; int main ().cpp<br />
1&gt;d:\meine projekte\visual c++\adressbuch\adressbuch\int main ().cpp(66): error C2664: 'std::basic_ostream&lt;_Elem,_Traits&gt;::write': Konvertierung des Parameters 1 von 'std::map&lt;_Kty,_Ty&gt; *' in 'const char *' nicht möglich<br />
1&gt; with<br />
1&gt; [<br />
1&gt; _Elem=char,<br />
1&gt; _Traits=std::char_traits&lt;char&gt;<br />
1&gt; ]<br />
1&gt; and<br />
1&gt; [<br />
1&gt; _Kty=std::string,<br />
1&gt; _Ty=int<br />
1&gt; ]<br />
1&gt; Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.<br />
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========</p>
<p>der betroffene Quelltextausschnitt sieht wie folg aus:</p>
<pre><code class="language-cpp">Output.open (&quot;adressbuch.db&quot;, ios::binary);
				Output.write (&amp;adressen_map, sizeof (adressen_map));
				Output.close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2111413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111413</guid><dc:creator><![CDATA[Zweistein97]]></dc:creator><pubDate>Sat, 27 Aug 2011 18:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sat, 27 Aug 2011 18:45:07 GMT]]></title><description><![CDATA[<p>Oje, da ist ja alles falsch. Vergiss deinen Ansatz komplett.</p>
<p>Also die Grundidee wäre es, die einzelnen Mapelemente zu serialisieren und abzuspeichern. Ich sehe du hast ints als Schlüssel und strings als Werte. Die ints kannste einfach als Zeichen ausgeben, bei den Strings ist das ein bisschen komplizierter. Falls da nur &quot;normaler&quot; Text drin steht, kannst du sie auch einfach ausgeben und hinterher einfach den Rest der Zeile hinter dem Schlüssel einlesen. Falls da auch Sonderzeichen in den Strings sein können, dann wäre es vielleicht eine gute Idee, die Zeichenkette erst in base64 o.Ä. konvertieren, dass macht das ganze etwas einfacher.</p>
<p>Und dann iterierst du über die ganze Map und gibst jedes einzelne Element aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111415</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 27 Aug 2011 18:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sat, 27 Aug 2011 18:48:44 GMT]]></title><description><![CDATA[<p>Erstens: Wie der Compiler dir mitteilen willst, kann man die meisten Zeigertypen nicht implizit ineinander umwandeln. Dazu benötigt man schon einen expliziten Cast.</p>
<p>Zweitens: Selbst wenn du das durch den Compiler quetschen kannst, macht es nicht das was du erwartest. write() schreibt nur die Innereien des übergebenen Objekts, bei einer map&lt;&gt; sind das vermutlich ein paar Zeiger und int-Werte. Die eigentlichen Nutzdaten liegen auf dem Heap und werden nicht angefasst.<br />
Um den map&lt;&gt;-Inhalt abspeichern zu können, mußt du einmal komplett durch iterieren und jedes Schlüssel/Wert-Paar einzeln schreiben.</p>
<p>(btw, std::string kannst du auch nicht einfach per write() schreiben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111417</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 27 Aug 2011 18:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sun, 28 Aug 2011 09:42:37 GMT]]></title><description><![CDATA[<p>hallo,<br />
wenn ich die Map komplett iteriere und abspeichere, kann ich dann nicht ein Problem bekommen, wenn ich diese Daten aus der Datei auslesen möchte?<br />
Ich meine, ich speichere doch in der Map strings ab und als Wert dazu ints. Wie kann ich denn auf Basis von Strings iterieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111549</guid><dc:creator><![CDATA[Zweistein97]]></dc:creator><pubDate>Sun, 28 Aug 2011 09:42:37 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sun, 28 Aug 2011 10:29:32 GMT]]></title><description><![CDATA[<p>Zweistein97 schrieb:</p>
<blockquote>
<p>Wie kann ich denn auf Basis von Strings iterieren?</p>
</blockquote>
<p>So wie bei jedem anderen Typ? Was soll an Strings speziell sein?</p>
<p>Der Iterator gibt dereferenziert ein <code>std::pair</code> mit Key und Value zurück. Die kannt du ganz normal auslesen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111573</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 28 Aug 2011 10:29:32 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sun, 28 Aug 2011 12:04:25 GMT]]></title><description><![CDATA[<p>also in etwa so:</p>
<pre><code class="language-cpp">typedef std::map&lt;std::string,int&gt;::const_iterator MCI;

for(MCI itr = adressen_map.begin(); itr != adressen_map.end(); itr++)
{
    output &lt;&lt; itr-&gt;first &lt;&lt; '\t' &lt;&lt; itr-&gt;second &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2111586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111586</guid><dc:creator><![CDATA[Hyde++ 0]]></dc:creator><pubDate>Sun, 28 Aug 2011 12:04:25 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sun, 28 Aug 2011 11:57:22 GMT]]></title><description><![CDATA[<p>Hyde++ schrieb:</p>
<blockquote>
<p>also in etwa so:</p>
<pre><code class="language-cpp">typedef std::string::const_iterator SCI;

for(SCI itr = adressen_map.begin(); itr != adressen_map.end(); itr++)
{
    output &lt;&lt; itr-&gt;first &lt;&lt; '\t' &lt;&lt; itr-&gt;second &lt;&lt; '\n';
}
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Du meinst wohl eher einen map-Iterator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111597</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 28 Aug 2011 11:57:22 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sun, 28 Aug 2011 12:03:19 GMT]]></title><description><![CDATA[<p>ohhh, ja klar! peinlich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111600</guid><dc:creator><![CDATA[Hyde++ 0]]></dc:creator><pubDate>Sun, 28 Aug 2011 12:03:19 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sun, 28 Aug 2011 12:06:31 GMT]]></title><description><![CDATA[<p>Ausserdem könntest du dir unnötige Kopien sparen, indem du <code>++itr</code> statt <code>itr++</code> schreibst. Manche Leute speichern sich sogar den <code>end()</code> -Iterator, wenn er konstant bleibt <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>
<p>(Wird beides kaum etwas ausmachen, aber ist gut zu wissen in Situationen, wo der Iterationsoverhead ins Gewicht fällt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111602</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 28 Aug 2011 12:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sun, 28 Aug 2011 18:30:15 GMT]]></title><description><![CDATA[<p>Hyde++ schrieb:</p>
<blockquote>
<p>also in etwa so:</p>
<pre><code class="language-cpp">typedef std::map&lt;std::string,int&gt;::const_iterator MCI;

for(MCI itr = adressen_map.begin(); itr != adressen_map.end(); itr++)
{
    output &lt;&lt; itr-&gt;first &lt;&lt; '\t' &lt;&lt; itr-&gt;second &lt;&lt; '\n';
}
</code></pre>
</blockquote>
<p>gut! Danke für den Beispielquelltext <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 />
Nur arbeitest du mit zeilenumbrüchen innerhalt einer Datei.<br />
Als eher unerfahrener Programmierer würde ich gern wissen, wie man etwas ausliest.<br />
habt ihr hier eine Ahnung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111735</guid><dc:creator><![CDATA[Zweistein97]]></dc:creator><pubDate>Sun, 28 Aug 2011 18:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sun, 28 Aug 2011 21:26:05 GMT]]></title><description><![CDATA[<p>Zweistein97 schrieb:</p>
<blockquote>
<p>Als eher unerfahrener Programmierer würde ich gern wissen, wie man etwas ausliest.<br />
habt ihr hier eine Ahnung?</p>
</blockquote>
<p>mit getline() bzw. Stream-Operator die beiden Werte lesen und dann per insert() in die map&lt;&gt; einfügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111782</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 28 Aug 2011 21:26:05 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Sun, 28 Aug 2011 21:58:11 GMT]]></title><description><![CDATA[<p>Vielleicht könnte dir dieser Thread helfen, in dem ich ein ähnliches Problem hatte:</p>
<p><a href="http://www.c-plusplus.net/forum/291145" rel="nofollow">http://www.c-plusplus.net/forum/291145</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111801</guid><dc:creator><![CDATA[Ki]]></dc:creator><pubDate>Sun, 28 Aug 2011 21:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Mon, 29 Aug 2011 11:40:06 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Zweistein97 schrieb:</p>
<blockquote>
<p>Als eher unerfahrener Programmierer würde ich gern wissen, wie man etwas ausliest.<br />
habt ihr hier eine Ahnung?</p>
</blockquote>
<p>mit getline() bzw. Stream-Operator die beiden Werte lesen und dann per insert() in die map&lt;&gt; einfügen.</p>
</blockquote>
<p>Es fände es echt gut, wenn du mir ein Codebeispiel geben würdest. Beim Googlen bin ich darauf gestoßen (Um ehrlich zu sein, war das das einzige womit ich etwas anfangen konnte):</p>
<p><a href="http://www.willemer.de/informatik/cpp/iostream.htm" rel="nofollow">http://www.willemer.de/informatik/cpp/iostream.htm</a></p>
<p>Die Erklärung auf dieser Seite ist aber zu kurz für mich, damit ich es verstehe... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111992</guid><dc:creator><![CDATA[Zweistein97]]></dc:creator><pubDate>Mon, 29 Aug 2011 11:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Mon, 29 Aug 2011 11:52:47 GMT]]></title><description><![CDATA[<p>Ach nun komm. Die ersten Treffer bei jeder einigermaßen gut gestellten Google-Anfrage dürften diese sein:<br />
<a href="http://www.cplusplus.com/reference/string/getline/" rel="nofollow">http://www.cplusplus.com/reference/string/getline/</a><br />
<a href="http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/" rel="nofollow">http://www.cplusplus.com/reference/iostream/istream/operator&gt;&gt;/</a></p>
<p>Außerdem sollte das in so ziemlich jedem Lehrbuch zu C++ schätzungsweise auf Seite 2 stehen.</p>
<p>Und was willst du noch mehr? Der Link sind 4 sehr große Bildschirmseiten. Du erwartest doch nicht, dass hier jemand <strong>noch mehr</strong> Erklärung als das liefert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112001</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 29 Aug 2011 11:52:47 GMT</pubDate></item><item><title><![CDATA[Reply to Maps in Datei abspeichern on Mon, 29 Aug 2011 12:25:11 GMT]]></title><description><![CDATA[<p>zu beachten ist, das diese Seiten auf Englisch sind, und ich es im Englischen als 13 Jähriger noch nicht so weit bin....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112029</guid><dc:creator><![CDATA[Zweistein97]]></dc:creator><pubDate>Mon, 29 Aug 2011 12:25:11 GMT</pubDate></item></channel></rss>