<?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[Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>mit seekp () ist es ja möglich, den Offset der Datei anzugeben. Ich möchte jedoch die Zeilennummer angeben können, oder anders formuliert, der Schreib/Lesezeiger soll auf den Anfang einer Zeile zeigen, die ich angegeben habe. Wie ist das möglich? Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196447/schreib-lesezeiger-auf-bestimmte-zeile-in-datei-setzen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 14:15:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196447.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Oct 2007 20:19:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Mon, 29 Oct 2007 20:19:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>mit seekp () ist es ja möglich, den Offset der Datei anzugeben. Ich möchte jedoch die Zeilennummer angeben können, oder anders formuliert, der Schreib/Lesezeiger soll auf den Anfang einer Zeile zeigen, die ich angegeben habe. Wie ist das möglich? Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394348</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Mon, 29 Oct 2007 20:19:32 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Mon, 29 Oct 2007 20:25:45 GMT]]></title><description><![CDATA[<p>Dateioperationen sind byte und nicht zeilen orientiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394350</guid><dc:creator><![CDATA[m175]]></dc:creator><pubDate>Mon, 29 Oct 2007 20:25:45 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Mon, 29 Oct 2007 20:34:41 GMT]]></title><description><![CDATA[<p>Es ist nicht möglich ... nur wenn du für das Zeilenende dir ein Terminierungszeichen überlegst, oder du einfach nicht binär die Datei öffnest <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394354</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 29 Oct 2007 20:34:41 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Mon, 29 Oct 2007 20:56:01 GMT]]></title><description><![CDATA[<p>Danke, hab's mir jetzt zu Herzen genommen, dass alles Byteorientiert ist. Ich hab mal spontan ein Codebeispiel geschrieben, mich wundert's, dass es jetzt wirklich funktioniert:</p>
<pre><code class="language-cpp">struct test
    {
        std::string name;
        std::string nachname;
        std::string email;
    };

    test k1;

    std::cout &lt;&lt; &quot;k1: &quot; &lt;&lt; sizeof (k1) &lt;&lt; std::endl;

    k1.name = &quot;Hans&quot;;
    k1.nachname = &quot;Wurscht&quot;;
    k1.email = &quot;hans.wurscht.frenenet.de&quot;;
    std::cout &lt;&lt; &quot;k1 initialisiert: &quot; &lt;&lt; sizeof (k1) &lt;&lt; std::endl;

    std::ofstream out (&quot;C://struct.txt&quot;, std::ios::binary);
    out.write (reinterpret_cast &lt;char*&gt; (&amp;k1), sizeof (test));
    out.close ();

    std::ifstream in (&quot;C://struct.txt&quot;, std::ios::binary);
    test k2;
    in.read (reinterpret_cast &lt;char*&gt; (&amp;k2), sizeof (k1));
    std::cout &lt;&lt; k2.name;
    std::cout &lt;&lt; k2.nachname;
    std::cin.get ();
</code></pre>
<p>Danke Leute! <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/1394362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394362</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Mon, 29 Oct 2007 20:56:01 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Mon, 29 Oct 2007 21:02:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct foo
{
    std::string name;
    std::string nachname;
    std::string email;
    foo(std::string const&amp; name, std::string const&amp; nachname, std::string const&amp; email) : name(name), nachname(nachname), email(email) {}
};

int main()
{
    foo _inst(&quot;Hans&quot;, &quot;Wurscht&quot;, &quot;hans.wurscht@gmx.com&quot;);
    std::cout &lt;&lt; &quot;sizeof(foo) = &quot; &lt;&lt; sizeof(foo) &lt;&lt; std::endl;
    std::cout &lt;&lt; &quot;sizeof(_inst) = &quot; &lt;&lt; sizeof (_inst) &lt;&lt; std::endl;
    std::cin.get ();
}
</code></pre>
<p>was gibt er dir aus? <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394366</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 29 Oct 2007 21:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Mon, 29 Oct 2007 21:12:16 GMT]]></title><description><![CDATA[<p>Genau das selbe habe ich vorher auch probiert <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="😉"
    /> Ich war überrascht, dass die Größe in beiden Fällen gleich ist. Wäre sie es nicht, wär das Auslesen auch nicht möglich <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/1394368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394368</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Mon, 29 Oct 2007 21:12:16 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 06:55:01 GMT]]></title><description><![CDATA[<p>Wieso sollte die Größe nicht gleich sein? sizeof() misst nur die Größe der Kernelemente eines Objekts und die steht bereits zur Compilezeit fest (bei std::string sind das einige Pointer/int-Werte - der seperat angeforderte Speicherbereich mit den Nutzdaten liegt außerhalb).</p>
<p>PS: Übrigens ist es sehr gefährlich, auf Byte-Ebene mit nicht-PODs zu hantieren - damit zerstörst du möglicherweise die internen Verwaltungsstrukturen der Objekte. Da wundert es mich wirklich, daß dein Code dort oben keine SegFaults prozuziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394454</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 30 Oct 2007 06:55:01 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 07:10:01 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Da wundert es mich wirklich, daß dein Code dort oben keine SegFaults prozuziert.</p>
</blockquote>
<p>Mich nicht, er liest doch Zeiger wieder ein, die noch gültig (da noch in Scope) sind: Es wird test2 eingelesen. Dabei ist das, was eingelesen wird, natürlich Datenmüll. Aber dieser Datenmüll ist zufällig gültig, weil test1 noch existiert. Von daher ist kein Wunder, dass dieser spezielle Code „funktioniert“. Das, was der OP will, tut er natürlich trotzdem nicht.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16917">@CodeOriginator</a>: Der Code ist, wie Du vielleicht schon entnommen hast, Müll. Dein Vorhaben klappt so nicht. Du musst für Deine Struktur einen spezifischen Ausgabe-Operator schreiben. Der Cast auf <code>char*</code> bringt nicht das, was Du Dir erwartest (sowas klappt nur mit POD).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394457</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 30 Oct 2007 07:10:01 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 07:31:09 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Da wundert es mich wirklich, daß dein Code dort oben keine SegFaults prozuziert.</p>
</blockquote>
<p>Mich nicht, er liest doch Zeiger wieder ein, die noch gültig (da noch in Scope) sind: Es wird test2 eingelesen. Dabei ist das, was eingelesen wird, natürlich Datenmüll. Aber dieser Datenmüll ist zufällig gültig, weil test1 noch existiert. Von daher ist kein Wunder, dass dieser spezielle Code „funktioniert“. Das, was der OP will, tut er natürlich trotzdem nicht.</p>
</blockquote>
<p>Daß das Einlesen hier zufällig klappt, kann ich durchaus verstehen, aber danach hätte ich einen SegFault erwartet, weil beide Objekte versuchen, diesen Speicher wieder freizugeben (double delete).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394466</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 30 Oct 2007 07:31:09 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 07:37:02 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Daß das Einlesen hier zufällig klappt, kann ich durchaus verstehen, aber danach hätte ich einen SegFault erwartet, weil beide Objekte versuchen, diesen Speicher wieder freizugeben (double delete).</p>
</blockquote>
<p>Ja, da haste auch wieder recht. <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/1394472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394472</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 30 Oct 2007 07:37:02 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 08:20:42 GMT]]></title><description><![CDATA[<p>Danke Leute, wenn ich mir das durchdenke, muss ich euch Recht geben. Daher ist es auch kein Wunder, dass es jetzt bei mir im Projekt trotzdem nicht funktioniert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Könnt ihr mir bitte erklären, was PODs sind, und wie ich es besser machen kann? Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394491</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Tue, 30 Oct 2007 08:20:42 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 08:28:04 GMT]]></title><description><![CDATA[<p>POD (<strong>P</strong>lain <strong>O</strong>ld <strong>D</strong>ata) sind kurz gesagt Datentypen, die aus einem C-Programm entsprungen sein könnten - das umfasst außer den build-in Typen (char, int, double etc) Structs/Klassen, die keine eigenen Konstruktoren, Destruktoren oder Zuweisungsoperatoren und nur POD-Elemente haben.</p>
<p>Für dein Problem solltest du der Klasse einen eigenen operator&lt;&lt; (und operator&gt;&gt;) spendieren, der die Aus- und Eingabe übernimmt - die können auf die IO-Operatoren zurückgreifen, wenn du willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394497</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 30 Oct 2007 08:28:04 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 09:04:18 GMT]]></title><description><![CDATA[<p>Okay, soweit komme ich noch klar. Habe mir den <a href="http://en.wikipedia.org/wiki/Plain_Old_Data_Structures" rel="nofollow">Artikel</a> zu PODs bei Wikipedia durchgelesen. Wenn ich das ungefähr richtig verstanden habe, wäre dann die folgende Klasse, die einen platformunabhängigen 32 Bit Integer darstellt, auch eine Art POD? (Mal abgesehen vom Ctor, aber darf der zwangsläufig nicht dabei sein, um eine Klasse einen POD zu nennen?)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

typedef unsigned char My32BitInteger[4];

class MyInteger
{
    private:
        My32BitInteger myInt;

    public:
        // Konvertierungsoperator
      operator int();
    // Standardkonstruktor
    MyInteger()
    {
        cout &lt;&lt; &quot;Standardkonstruktor&quot; &lt;&lt; endl;
        myInt[0] = 0;
        myInt[1] = 0;
        myInt[2] = 0;
        myInt[3] = 0;
    }

    // Konvertierungskonstruktor
    MyInteger( int i )
    {
        cout &lt;&lt; &quot;Konvertierungskonstruktor&quot; &lt;&lt; endl;
        myInt[0] = *( reinterpret_cast &lt;char*&gt; (&amp;i)   );
        myInt[1] = *( reinterpret_cast &lt;char*&gt; (&amp;i)+1 );
        myInt[2] = *( reinterpret_cast &lt;char*&gt; (&amp;i)+2 );
        myInt[3] = *( reinterpret_cast &lt;char*&gt; (&amp;i)+3 );
    }
};

// Konvertierungsoperator
MyInteger:: operator int()
{
     cout &lt;&lt; &quot;Konvertierungsoperator &quot; &lt;&lt; endl;
    return     *(reinterpret_cast &lt;unsigned*&gt; (myInt));
}

int main()
{
    // Konvertierungskonstruktor
    MyInteger my_int( 77777777 );
    cout &lt;&lt; my_int &lt;&lt; endl;

    // Standardkonstruktor
     MyInteger my_integer;

    // Konvertierungsoperator
      int i = my_integer;

    cout &lt;&lt; i &lt;&lt; endl;
    my_integer = my_int;

    cout &lt;&lt; my_integer &lt;&lt; endl;
    getchar ();
    return 0;
}
</code></pre>
<p>CStoll, letztendlich stoße ich aber trotzdem auf das Problem, dass ich nicht weiß, wie ich nun eine Datenstruktur sicher in eine Datei abspeichere. Soll ich mich dann immer auf diese Klasse beziehen, also z.B. <em>in.read (my_integer, sizeof (my_integer));</em> schreiben, oder wie soll ich das lösen?</p>
<p>Edit, sorry muss mich berichtigen:</p>
<p>Wikipedia schrieb:</p>
<blockquote>
<p>Plain Old Data Structures (PODS) are data structures [...]</p>
</blockquote>
<p>Nach der Aussage müsste meine test-Struktur (eine Seite vorher) eh schon ein POD sein. <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394516</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Tue, 30 Oct 2007 09:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 09:20:01 GMT]]></title><description><![CDATA[<p>Diese Klasse könnte als POD durchgehen, deine frühere Beispielstruktur definitiv nicht (std::string kapselt die Verwaltung eines char-Zeigers und ist deshalb kein POD - das vererbt sich auch auf die Mutter-Klasse).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394521</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 30 Oct 2007 09:20:01 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 09:22:10 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Du kannst deiner Klasse doch read/write-Funktionen (binär) bzw. operator&lt;&lt; &gt;&gt; (text) spendieren, so dass sie sich selbst vernünftig lesen und schreiben kann. Dann ist diese Herumcasterei unnötig. Konvertierungsoperatoren sollte man sowieso nur dann erzeugen wenn sie absolut nicht zu vermeiden sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394524</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 30 Oct 2007 09:22:10 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 09:28:12 GMT]]></title><description><![CDATA[<p>Also wenn ich anstatt <em>std::string</em>, <em>char</em>* nehme, wäre die Struktur also ein POD. Und das ist dann so okay, wenn ich nachfolgend mit der selben Methode ein und -aus lese?</p>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Du kannst deiner Klasse doch read/write-Funktionen (binär) bzw. operator&lt;&lt; &gt;&gt; (text) spendieren, so dass sie sich selbst vernünftig lesen und schreiben kann.</p>
</blockquote>
<p>Casten werde ich so oder so müssen, wenn auch nur klassenintern. Anlass für diese ganze Problematik war ja das Dateihandling auf Zeichen/ASCII -ebene, weshalb ich den Code in meinem Programm auf Byteorientierung umschreiben musste/muss, weshalb relativ wenig Zeit bliebt, eine Klasse dafür zu implementieren. Aber es wäre natürlich eine bessere Lösung, wiegesagt, wenn mir jetzt noch jemand erklären könnte, wie das mit den read/write Methoden intern aussieht, dann ist mir sehr geholfen. <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/1394527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394527</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Tue, 30 Oct 2007 09:28:12 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 09:39:50 GMT]]></title><description><![CDATA[<p>write könnte so aussehen.</p>
<pre><code class="language-cpp">void MyInteger::write(ostream&amp; out)
{
   out.write(reinterpret_cast&lt;const char*&gt;(myInt), sizeof(unsigned char));
   out.write(reinterpret_cast&lt;const char*&gt;(myInt+1), sizeof(unsigned char));
   out.write(reinterpret_cast&lt;const char*&gt;(myInt+2), sizeof(unsigned char));
   out.write(reinterpret_cast&lt;const char*&gt;(myInt+3), sizeof(unsigned char));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1394538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394538</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 30 Oct 2007 09:39:50 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 09:42:02 GMT]]></title><description><![CDATA[<p>CodeOriginator schrieb:</p>
<blockquote>
<p>Also wenn ich anstatt <em>std::string</em>, <em>char</em>* nehme, wäre die Struktur also ein POD. Und das ist dann so okay, wenn ich nachfolgend mit der selben Methode ein und -aus lese?</p>
</blockquote>
<p>Ja, dann wäre es ein POD - allerdings mußt du dich trotzdem selber darum kümmern, daß diese char-Zeiger auf intakte Daten verweisen - wenn du einfach die Adresse übernimmst, die beim letzten Programmlauf in die Datei geschrieben wurde, bekommst du nur Müll (und saubere char* Verarbeitung erfordert eigene Speicherverwaltung (Copy-Ctor/op=/Dtor) - damit bist du doch wieder bei einem Nicht-POD).</p>
<blockquote>
<p>Aber es wäre natürlich eine bessere Lösung, wiegesagt, wenn mir jetzt noch jemand erklären könnte, wie das mit den read/write Methoden intern aussieht, dann ist mir sehr geholfen. <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>
</blockquote>
<p>In deiner read/write kannst du natürlich die internen Daten binär speichern - wichtig ist nur, daß du alle relevanten Daten erwischst (bei Objekten variabler Größe gehören dazu auch die Größenangaben oder Endemarken), z.B.:</p>
<pre><code class="language-cpp">class test
{
  string data;
public:
  void writeto(ostream&amp; out)
  {
    size_t sz = data.size()
    out.write((char*)&amp;sz,sizeof(size_t));
    out.write(data.c_str(),sz);
  }
  void readfrom(istream&amp; in)
  {
    size_t sz;
    in.read((char*)&amp;sz,sizeof(size_t));
    data.resize(sz);
    in.read(&amp;data[0],sz);
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1394540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394540</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 30 Oct 2007 09:42:02 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 10:01:14 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>write könnte so aussehen. [...]</p>
</blockquote>
<p>Hehe danke, dann bestätigt das meine Frage von vorhin.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>(bei Objekten variabler Größe gehören dazu auch die Größenangaben oder Endemarken) [...]</p>
</blockquote>
<p>Geht klar, jetzt verstehe ich es <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="🙂"
    /> Ich werde versuchen, es zu implementieren, und parallel zum Funktionstest meine Klasse hier zu posten, um eine Bestätigung dafür zu erhalten, ob es so stimmt. Vorläufig schonmal vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394556</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Tue, 30 Oct 2007 10:01:14 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 11:05:31 GMT]]></title><description><![CDATA[<p>Wenn ich sehe, daß beim binären Lesen und Schreiben (Serialisieren) von Strings immer wieder dieselben Probleme auftauchen, sollte man eigentlich der std::string-Klasse zwei Funktionen spendieren (als C++ Standard), welche diese (eigentlich simplen) Aufgaben übernehmen.<br />
Denn daß die beiden Stream-Operatoren &lt;&lt; und &gt;&gt; der Klasse std::string eigentlich untauglich dafür sind (da sie quasi nicht &quot;bijektiv&quot; sind - wegen Whitespaces und fehlendem Endekennzeichen), läßt die Anfänger immer wieder in die selbe Programmierfalle laufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394599</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Tue, 30 Oct 2007 11:05:31 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 15:24:08 GMT]]></title><description><![CDATA[<p>Bisher steht noch nichts in den C++0x Papers von solch einer Überlegung.... Wär aber definitiv eine gute Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394709</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Tue, 30 Oct 2007 15:24:08 GMT</pubDate></item><item><title><![CDATA[Reply to Schreib&#x2F;Lesezeiger auf bestimmte Zeile in Datei setzen? on Tue, 30 Oct 2007 18:12:50 GMT]]></title><description><![CDATA[<p>Ehrlich gesagt halte ich die string-Klasse schon jetzt für etwas groß. Die Funktionen wären schon praktisch, aber meiner Meinung nach nicht als Member, sondern eher in einer Art string_algorithm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394799</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 30 Oct 2007 18:12:50 GMT</pubDate></item></channel></rss>