<?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[binäres lesen &amp;amp; schreiben in fstream?]]></title><description><![CDATA[<p>Hallo,<br />
Ich möchte eine Liste von INTs in eine Datei schreiben. einfach ::operator&lt;&lt;(MyFStream,MyInt) für jedes int aufzurufen bringt es nicht, da ich beim Lesen später nicht unterscheiden kann, wann ein INT aufhört und ein neues beginnt (da die Datei später nur _eine_ lange Zahl enthält).<br />
Wie kann ich nun die INT binär schreiben/lesen, ohne fstream.write((char*)(&amp;MyInt),sizeof(int)); / fstream.read(...) zu benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181147/binäres-lesen-amp-schreiben-in-fstream</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 10:24:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181147.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 May 2007 11:46:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to binäres lesen &amp;amp; schreiben in fstream? on Thu, 10 May 2007 11:46:35 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich möchte eine Liste von INTs in eine Datei schreiben. einfach ::operator&lt;&lt;(MyFStream,MyInt) für jedes int aufzurufen bringt es nicht, da ich beim Lesen später nicht unterscheiden kann, wann ein INT aufhört und ein neues beginnt (da die Datei später nur _eine_ lange Zahl enthält).<br />
Wie kann ich nun die INT binär schreiben/lesen, ohne fstream.write((char*)(&amp;MyInt),sizeof(int)); / fstream.read(...) zu benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282333</guid><dc:creator><![CDATA[fstr]]></dc:creator><pubDate>Thu, 10 May 2007 11:46:35 GMT</pubDate></item><item><title><![CDATA[Reply to binäres lesen &amp;amp; schreiben in fstream? on Thu, 10 May 2007 11:51:23 GMT]]></title><description><![CDATA[<p>fstr schrieb:</p>
<blockquote>
<p>Hallo,<br />
Ich möchte eine Liste von INTs in eine Datei schreiben. einfach ::operator&lt;&lt;(MyFStream,MyInt) für jedes int aufzurufen bringt es nicht, da ich beim Lesen später nicht unterscheiden kann, wann ein INT aufhört und ein neues beginnt (da die Datei später nur _eine_ lange Zahl enthält).</p>
</blockquote>
<p>Wenn du die Werte später auftrennen können willst, müsstest du Trennzeichen (sehr beliebt sind Space oder '\t') zwischen deine Werte schreiben.</p>
<blockquote>
<p>Wie kann ich nun die INT binär schreiben/lesen, ohne fstream.write((char*)(&amp;MyInt),sizeof(int)); / fstream.read(...) zu benutzen?</p>
</blockquote>
<p>Gar nicht - write()/read() sind der Weg, um Daten binär zu schreiben/lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282338</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 10 May 2007 11:51:23 GMT</pubDate></item><item><title><![CDATA[Reply to binäres lesen &amp;amp; schreiben in fstream? on Thu, 10 May 2007 12:21:16 GMT]]></title><description><![CDATA[<p>fstr schrieb:</p>
<blockquote>
<p>.. da ich beim Lesen später nicht unterscheiden kann, wann ein INT aufhört und ein neues beginnt</p>
</blockquote>
<p>wie CStoll schon sagte, müssen die ints mit Whitespace (Leerzeichen, Tabulator oder Zeilenende) getrennt werden, dann ist auch das wieder einlesen kein Problem. Hier ein Beispiel:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;    // copy
#include &lt;fstream&gt;      // i/ofstream
#include &lt;iterator&gt;     // i/ostream_iterator
#include &lt;iostream&gt;     // cout, endl

int main()
{
    using namespace std;
    {
        // ints in Datei schreiben
        ofstream out( &quot;int_list.txt&quot; );
        for( int i = 0; i &lt; 10; ++i )
            out &lt;&lt; i*i &lt;&lt; &quot; &quot;;      // mit Space (oder LF, oder Tab) trennen
    }
    // ints aus Datei lesen &amp; anzeigen
    ifstream in( &quot;int_list.txt&quot; );
    copy( istream_iterator&lt; int &gt;( in ), istream_iterator&lt; int &gt;(), 
        ostream_iterator&lt; int &gt;( cout &lt;&lt; &quot;int-Liste: &quot;, &quot;; &quot; ) );
    cout &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>binäres IO als Standardvorgehen ist nicht zu empfehlen. Allein schon deswegen, weil man das was man schreibt mit einem normalen Editor nicht mehr lesen kann.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282360</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 10 May 2007 12:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to binäres lesen &amp;amp; schreiben in fstream? on Thu, 10 May 2007 14:22:58 GMT]]></title><description><![CDATA[<p>und weil es enorm fehleranfällig ist. Ein Schreibfehler weiter vorn und die ganze Datei wird nahezu unlesbar.<br />
Ich muß aber zugeben, dass ich es trotzdem manchmal mache. <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/1282435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282435</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 10 May 2007 14:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to binäres lesen &amp;amp; schreiben in fstream? on Thu, 10 May 2007 16:26:09 GMT]]></title><description><![CDATA[<p>Ok, ich bleibe bei .write...</p>
<p>Eine Frage noch:</p>
<pre><code class="language-cpp">template&lt;class T&gt;FORCEINLINE void Schreibe(ostream*const pStream,const T&amp; T_)
{
	pStream-&gt;write(reinterpret_cast&lt;const char*&gt;(&amp;T_),sizeof(T));
}
</code></pre>
<pre><code class="language-cpp">Schreibe(&amp;Datei,Ints.size());
</code></pre>
<p>Wies bekomme ich die Warnung &quot;Warning 8 warning C4267: 'argument' : conversion from 'size_t' to 'const unsigned int', possible loss of data&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282522</guid><dc:creator><![CDATA[fstr]]></dc:creator><pubDate>Thu, 10 May 2007 16:26:09 GMT</pubDate></item><item><title><![CDATA[Reply to binäres lesen &amp;amp; schreiben in fstream? on Fri, 11 May 2007 06:26:18 GMT]]></title><description><![CDATA[<p>Auf welches Argument bezieht sich denn diese Meldung?</p>
<p>(btw, spätestens wenn du nicht-PODs (&quot;echte&quot; C++ Klassen) oder struct's mit Pointer-Elementen auf diese Weise speichern willst, wirst du ein Problem haben - das Schreiben (und spätere Einlesen) wird problemlos compiliert, aber mit den zurückgelesenen Variablen wirst du nur mit viel Glück noch etwas anfangen können)</p>
<p>PS: Und tu dir selber einen Gefallen und übergib' den Stream per Referenz <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/1282767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282767</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 11 May 2007 06:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to binäres lesen &amp;amp; schreiben in fstream? on Thu, 17 May 2007 09:37:23 GMT]]></title><description><![CDATA[<p>In der</p>
<pre><code class="language-cpp">Schreibe(&amp;Datei,Ints.size());
</code></pre>
<p>-Zeile!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1286649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1286649</guid><dc:creator><![CDATA[fstr]]></dc:creator><pubDate>Thu, 17 May 2007 09:37:23 GMT</pubDate></item></channel></rss>