<?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[basic_$fstream]]></title><description><![CDATA[<p>hallo</p>
<p>ist nun ziemlich eine anfängerfrage. auf einer 8bit/byte-maschine steht z.b. in einer datei ein byte (1111 1111). soviel ich weiss kennt c++ das zweierkomplement nicht (im sinne von, dass es nicht spezifiziert ist ob das zweierkomplement verwendet wird oder nicht). nun möchte ich dieses eine byte auslesen (vorzugsweise als unsigned char denn 8x 1 ist für mich 255 und nicht -1), da ich das vorzeichen bei char nicht gebrauchen kann. das ganze soll natürlich plattformunabhängig sein. also eine datei die mein programm auf plattform 1 einliest soll auf plattform 2 gleich eingelesen werden. wäre es nicht der intuitive weg hier auf basic_ifstream&lt;unsigned char&gt; zuzugreifen? und wenn ja, muss ich dann meine eigene char-trait-klasse schreiben extra dafür? soviel ich weiss sind dieses unsigned &lt;-&gt; signed-konversionen ausserhalb des wertbereichs nur implementation-defined.</p>
<p>wie löst ihr sowas bzw. wie würdet ihr sowas lösen?</p>
<p>gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322647/basic_-fstream</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 19:41:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322647.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Jan 2014 09:32:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to basic_$fstream on Thu, 02 Jan 2014 09:32:29 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>ist nun ziemlich eine anfängerfrage. auf einer 8bit/byte-maschine steht z.b. in einer datei ein byte (1111 1111). soviel ich weiss kennt c++ das zweierkomplement nicht (im sinne von, dass es nicht spezifiziert ist ob das zweierkomplement verwendet wird oder nicht). nun möchte ich dieses eine byte auslesen (vorzugsweise als unsigned char denn 8x 1 ist für mich 255 und nicht -1), da ich das vorzeichen bei char nicht gebrauchen kann. das ganze soll natürlich plattformunabhängig sein. also eine datei die mein programm auf plattform 1 einliest soll auf plattform 2 gleich eingelesen werden. wäre es nicht der intuitive weg hier auf basic_ifstream&lt;unsigned char&gt; zuzugreifen? und wenn ja, muss ich dann meine eigene char-trait-klasse schreiben extra dafür? soviel ich weiss sind dieses unsigned &lt;-&gt; signed-konversionen ausserhalb des wertbereichs nur implementation-defined.</p>
<p>wie löst ihr sowas bzw. wie würdet ihr sowas lösen?</p>
<p>gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374540</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Thu, 02 Jan 2014 09:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to basic_$fstream on Thu, 02 Jan 2014 09:56:18 GMT]]></title><description><![CDATA[<p>Du kannst problemlos mit einem <code>std::ifstream</code>  <code>unsigned char</code> lesen. Das erfordert natürlich einen <code>reinterpret_cast&lt;char *&gt;</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374541</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Thu, 02 Jan 2014 09:56:18 GMT</pubDate></item><item><title><![CDATA[Reply to basic_$fstream on Thu, 02 Jan 2014 09:45:02 GMT]]></title><description><![CDATA[<pre><code>std::ifstream file(&quot;blubb.dat&quot;);
unsigned char c;
file.read(static_cast&lt;void*&gt;(&amp;c), 1);
if (file.gcount() != 1)
    // fk this shit
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2374542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374542</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 02 Jan 2014 09:45:02 GMT</pubDate></item><item><title><![CDATA[Reply to basic_$fstream on Thu, 02 Jan 2014 09:53:55 GMT]]></title><description><![CDATA[<p>einen char in einen unsigned char zu static-/reinterpret-casten ist welldefined und nicht plattformabhängig?</p>
<p>edit: ich meinte - wie gesagt - dass das lediglich implementation-defined ist, mehr aber nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374546</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Thu, 02 Jan 2014 09:53:55 GMT</pubDate></item><item><title><![CDATA[Reply to basic_$fstream on Thu, 02 Jan 2014 10:02:26 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>einen char in einen unsigned char zu static-/reinterpret-casten ist welldefined und nicht plattformabhängig?</p>
<p>edit: ich meinte - wie gesagt - dass das lediglich implementation-defined ist, mehr aber nicht.</p>
</blockquote>
<p>Da der <code>ifstream</code> mit den Bytes nicht rechnet, sondern sie nur kopiert, ist das Casten sicher.</p>
<p>PS: Die meisten C++-Programme machen viel absurdere Annahmen über plattformabhängiges Verhalten, zum Beispiel über das Layout von Typen größer als 1.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374547</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Thu, 02 Jan 2014 10:02:26 GMT</pubDate></item></channel></rss>