<?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[Speichern eines Vektors in eine Datei]]></title><description><![CDATA[<p>Ich habe zu dem Thema in den FAQ ein Beispiel gefunden. Dieses erfüllt aber nicht meine Ansprüche, da dort nur ein Datensatz pro Vektoreintrag gespeichert wird.<br />
Auf meinem Vektor liegen aber pro Vektoreintrag 3 Datensätze.</p>
<p>Also wie kann ich 3 Datensätze speichern?<br />
Vielen Dank schon mal...</p>
<p>Hier mal das Bsp aus den FAQ:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
    vector&lt;int&gt; myVec;
    myVec.reserve(100);
    // Sinnloses befüllen des Vectors, hauptsache da is was drin
    for(int i = 0;i &lt; 100;++i)
        myVec.push_back(i);

    fstream datei(&quot;Ausgabe.txt&quot;, ios::out);
    if(!datei)
        return 20;

    // Speichern
    datei&lt;&lt;myVec.size()&lt;&lt;&quot; &quot;; // Optional

    // Das ist das ganze Speichern. Bei Fragen fragen
    copy(myVec.begin(),myVec.end(),ostream_iterator&lt;int&gt;(datei,&quot; &quot;));

    datei.close(); // Datei schliessen (wollen ja wieder draus lesen)

    // Lesen
    datei.open(&quot;Ausgabe.txt&quot;,ios::in);
    if(!datei)
        return 20;

    myVec.clear();     // Vector leer machen, sonst heisst es noch ich les nix das
                    // stand da ja schon :clown:

    vector&lt;int&gt;::size_type size; //Optional
    datei&gt;&gt;size; //Optional
    myVec.reserve(size); //Optional

    istream_iterator&lt;int&gt; begin(datei); // Anfangsiterator auf die Datei
    istream_iterator&lt;int&gt; end; // Enditerator
    copy(begin,end,back_inserter(myVec)); // Und wieder auslesen.
    // Kontrollausgabe ob das auch geht
    copy(myVec.begin(),myVec.end(),ostream_iterator&lt;int&gt;(cout,&quot; &quot;));
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/160359/speichern-eines-vektors-in-eine-datei</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 22:03:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160359.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Sep 2006 08:50:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speichern eines Vektors in eine Datei on Mon, 25 Sep 2006 08:51:43 GMT]]></title><description><![CDATA[<p>Ich habe zu dem Thema in den FAQ ein Beispiel gefunden. Dieses erfüllt aber nicht meine Ansprüche, da dort nur ein Datensatz pro Vektoreintrag gespeichert wird.<br />
Auf meinem Vektor liegen aber pro Vektoreintrag 3 Datensätze.</p>
<p>Also wie kann ich 3 Datensätze speichern?<br />
Vielen Dank schon mal...</p>
<p>Hier mal das Bsp aus den FAQ:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
    vector&lt;int&gt; myVec;
    myVec.reserve(100);
    // Sinnloses befüllen des Vectors, hauptsache da is was drin
    for(int i = 0;i &lt; 100;++i)
        myVec.push_back(i);

    fstream datei(&quot;Ausgabe.txt&quot;, ios::out);
    if(!datei)
        return 20;

    // Speichern
    datei&lt;&lt;myVec.size()&lt;&lt;&quot; &quot;; // Optional

    // Das ist das ganze Speichern. Bei Fragen fragen
    copy(myVec.begin(),myVec.end(),ostream_iterator&lt;int&gt;(datei,&quot; &quot;));

    datei.close(); // Datei schliessen (wollen ja wieder draus lesen)

    // Lesen
    datei.open(&quot;Ausgabe.txt&quot;,ios::in);
    if(!datei)
        return 20;

    myVec.clear();     // Vector leer machen, sonst heisst es noch ich les nix das
                    // stand da ja schon :clown:

    vector&lt;int&gt;::size_type size; //Optional
    datei&gt;&gt;size; //Optional
    myVec.reserve(size); //Optional

    istream_iterator&lt;int&gt; begin(datei); // Anfangsiterator auf die Datei
    istream_iterator&lt;int&gt; end; // Enditerator
    copy(begin,end,back_inserter(myVec)); // Und wieder auslesen.
    // Kontrollausgabe ob das auch geht
    copy(myVec.begin(),myVec.end(),ostream_iterator&lt;int&gt;(cout,&quot; &quot;));
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1143828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143828</guid><dc:creator><![CDATA[Roadda]]></dc:creator><pubDate>Mon, 25 Sep 2006 08:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to Speichern eines Vektors in eine Datei on Mon, 25 Sep 2006 09:21:12 GMT]]></title><description><![CDATA[<p>Roadda schrieb:</p>
<blockquote>
<p>Ich habe zu dem Thema in den FAQ ein Beispiel gefunden. Dieses erfüllt aber nicht meine Ansprüche, da dort nur ein Datensatz pro Vektoreintrag gespeichert wird.<br />
Auf meinem Vektor liegen aber pro Vektoreintrag 3 Datensätze.</p>
<p>Also wie kann ich 3 Datensätze speichern?</p>
</blockquote>
<p>Ich nehme an, die Datensätze liegen in einem struct vor?<br />
Dann schreib doch einfach ne Serialisierungsmethode, die du dann für jedes Vektorelement aufrufst.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143861</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 25 Sep 2006 09:21:12 GMT</pubDate></item><item><title><![CDATA[Reply to Speichern eines Vektors in eine Datei on Mon, 25 Sep 2006 09:24:56 GMT]]></title><description><![CDATA[<p>Die Datensätze liegen in einem enum...</p>
<p>Was ist eine Serialisierungsmethode?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143867</guid><dc:creator><![CDATA[Roadda]]></dc:creator><pubDate>Mon, 25 Sep 2006 09:24:56 GMT</pubDate></item><item><title><![CDATA[Reply to Speichern eines Vektors in eine Datei on Mon, 25 Sep 2006 09:38:36 GMT]]></title><description><![CDATA[<p>Roadda schrieb:</p>
<blockquote>
<p>Die Datensätze liegen in einem enum...</p>
</blockquote>
<p>na ja, auch wurscht. Dann machen wir halt ne Funktion draus:</p>
<pre><code class="language-cpp">//Dein Enum
enum Values { A, B, C };

//Die Funktion
void serialize(std::ofstream &amp;ofs, Values v) {
  short repr = static_cast&lt;short&gt;(v.A);
  ofs.write(reinterpret_cast&lt;char*&gt;(&amp;repr), sizeof(repr));

  repr = static_cast&lt;short&gt;(v.B);
  ofs.write(reinterpret_cast&lt;char*&gt;(&amp;repr), sizeof(repr));

  repr = static_cast&lt;short&gt;(v.C);
  ofs.write(reinterpret_cast&lt;char*&gt;(&amp;repr), sizeof(repr));
};

Values deserialize(std::ifstream &amp;ifs) {
  Values v;
  short repr;
  ifs.read(reinterpret_cast&lt;char*&gt;(&amp;repr), sizeof(repr));
  v.A = static_cast&lt;Values&gt;(repr);

  ifs.read(reinterpret_cast&lt;char*&gt;(&amp;repr), sizeof(repr));
  v.B = static_cast&lt;Values&gt;(repr);

  ifs.read(reinterpret_cast&lt;char*&gt;(&amp;repr), sizeof(repr));
  v.C = static_cast&lt;Values&gt;(repr);

  return v;
};
</code></pre>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143876</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 25 Sep 2006 09:38:36 GMT</pubDate></item><item><title><![CDATA[Reply to Speichern eines Vektors in eine Datei on Mon, 25 Sep 2006 09:39:58 GMT]]></title><description><![CDATA[<p>What'n für ein enum? Vielleicht wäre es doch günstig, mal ein Beispiel für DEIN Problem zu zeigen. Mit einem enum kannst du (fast) genauso umgehen wie mit int-Werten.</p>
<p>(@Serialisierung: Du benötigst eigentlich nur die Streaming-Operatoren &quot;ostream&amp; operator&lt;&lt;(ostream&amp; f, const myType&amp; d);&quot; und &quot;istream&amp; operator&gt;&gt;(istream&amp; f, myType&amp; d);&quot; für deinen Datentyp, dann kannst du deinen Beispielcode analog zu oben einsetzen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143878</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 25 Sep 2006 09:39:58 GMT</pubDate></item><item><title><![CDATA[Reply to Speichern eines Vektors in eine Datei on Mon, 25 Sep 2006 10:04:46 GMT]]></title><description><![CDATA[<p>Mein Problem: Ich erstelle mit FLTK einen Dialog, der mit verschiedenen Testarten arbeitet. Diese Testarten enthalten 3 Daten: Testname, Pfad und Größe.<br />
Wenn ich jetzt auf meinen Vektor Testarten lege, will ich diese speichern und dazu muss ich ja dem Vektor klar machen, dass der eine String, den die Funktion einließt, dann in drei Teilstrings umwandelt wird.</p>
<p>QGPC: Danke für die Mühe, aber wie binde ich das denn jetzt in mein Programm ein bzw. wie sieht dann meine speichern-funktion aus?</p>
<p>Meine Funktion:</p>
<pre><code class="language-cpp">void Arbeitsfenster::speichern() {
     ofstream ausgabedatei(&quot;Ausgabe.txt&quot;);
     if(ausgabedatei) {
     ostream_iterator&lt;int&gt;out(ausgabedatei, &quot;*&quot;);
     copy(tests.begin(), tests.end(), out);
     message(&quot;Gespeichert.&quot;);
     }
     ausgabedatei.close();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1143901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143901</guid><dc:creator><![CDATA[Roadda]]></dc:creator><pubDate>Mon, 25 Sep 2006 10:04:46 GMT</pubDate></item><item><title><![CDATA[Reply to Speichern eines Vektors in eine Datei on Mon, 25 Sep 2006 10:21:34 GMT]]></title><description><![CDATA[<p>Die Stream-Operatoren können das fast von alleine:</p>
<pre><code class="language-cpp">struct Daten
{
  string Name, Pfad;
  int Groesse;
};

ostream&amp; operator&lt;&lt;(ostream&amp; f,const Daten&amp; d)
{
  f&lt;&lt;d.Name&lt;&lt;&quot;-&quot;&lt;&lt;d.Pfad&lt;&lt;&quot;-&quot;&lt;&lt;d.Groesse;
  return f;
}

istream operator&gt;&gt;(istream&amp; f,Daten&amp; d)
{
  getline(f,d.Name,'-');
  getline(f,d.Pfad,'-');
  f&gt;&gt;d.Groesse;
  //Eventuell Fehlerkontrolle
  return f;
}
</code></pre>
<p>(In dem Datensatz dient das Minus als Trennzeichen - du mußt nur darauf achten, daß es nicht als Teil des Namens und Pfads vorkommt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143919</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 25 Sep 2006 10:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to Speichern eines Vektors in eine Datei on Mon, 25 Sep 2006 10:36:06 GMT]]></title><description><![CDATA[<p>Tschuldigung, meine Datensätze sind nicht in einem enum, sondern in der folgenden Klassen gespeichert:</p>
<pre><code class="language-cpp">enum Testart {
    fileExists, fileReadable, fileLength, directoryExists, directoryExecutable, 
    spaceSufficient, environmentVariable, commandOutput
};

class Test {
      public:
             Test(Testart ta = fileExists, const std::string to = &quot;&quot;, const std::string tp = &quot;&quot;)
             :testart_(ta), testobjekt_(to), testparameter_(tp){}
             virtual ~Test(){}
             Testart testart() const {
                  return testart_;
             }
             void testart(Testart t) {
                  testart_ = t;
             }
             const std::string&amp; testobjekt() const {
                   return testobjekt_;
             }
             void testobjekt(const std::string to) {
                  testobjekt_ = to;
             }
             const std::string&amp; testparameter() const {
                   return testparameter_;
             }
             void testparameter(const std::string tp) {
                  testparameter_ = tp;
             }
      private:
              Testart testart_;
              std::string testobjekt_, testparameter_;
};
</code></pre>
<p>Mein Fehler!</p>
<p>@Stoll: Danke für den Text!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143923</guid><dc:creator><![CDATA[Roadda]]></dc:creator><pubDate>Mon, 25 Sep 2006 10:36:06 GMT</pubDate></item></channel></rss>