<?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[2 Fragen zum Lesen von Daten]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe zwei Fragen.<br />
Meine erste:<br />
Wenn ich eine *.txt datei öffne und sie Zeichen für Zeichen in ein char schreibe, werden Leerzeichen und Zeilenumbrüche ignoriert. Warum ist das so? Und was kann man dagegen unternehmen?</p>
<p>Meine zweite:<br />
Wie kann man eine Datei Bit für Bit auslesen?</p>
<p>Mit ratlosen Grüßen<br />
DerRatlose</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228836/2-fragen-zum-lesen-von-daten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 08:35:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228836.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Dec 2008 12:30:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2 Fragen zum Lesen von Daten on Wed, 03 Dec 2008 12:30:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe zwei Fragen.<br />
Meine erste:<br />
Wenn ich eine *.txt datei öffne und sie Zeichen für Zeichen in ein char schreibe, werden Leerzeichen und Zeilenumbrüche ignoriert. Warum ist das so? Und was kann man dagegen unternehmen?</p>
<p>Meine zweite:<br />
Wie kann man eine Datei Bit für Bit auslesen?</p>
<p>Mit ratlosen Grüßen<br />
DerRatlose</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624894</guid><dc:creator><![CDATA[DerRatlose]]></dc:creator><pubDate>Wed, 03 Dec 2008 12:30:56 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Fragen zum Lesen von Daten on Wed, 03 Dec 2008 12:36:44 GMT]]></title><description><![CDATA[<p>DerRatlose schrieb:</p>
<blockquote>
<p>Meine erste:<br />
Wenn ich eine *.txt datei öffne und sie Zeichen für Zeichen in ein char schreibe, werden Leerzeichen und Zeilenumbrüche ignoriert. Warum ist das so?</p>
</blockquote>
<p>Vermutlich weil Du nicht korrekt einliest.</p>
<blockquote>
<p>Und was kann man dagegen unternehmen?</p>
</blockquote>
<p>Richtig einlesen.</p>
<p>(Ok, an diesem Punkt müsste ich wissen, wie Du einliest, um Dir zu sagen, warum es sich so verhält.)</p>
<blockquote>
<p>Meine zweite:<br />
Wie kann man eine Datei Bit für Bit auslesen?</p>
</blockquote>
<p>Zeichen für Zeichen auslesen und die einzelnen Bits aus den Zeichen extrahieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624900</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 03 Dec 2008 12:36:44 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Fragen zum Lesen von Daten on Wed, 03 Dec 2008 13:02:50 GMT]]></title><description><![CDATA[<p>OK, nehmen wir als Grundlage dieses kleine Programm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

int main() {
   char c;
   fstream f1, f2;
   f1.open( &quot;lesen.txt&quot;, ios::in );
   f2.open( &quot;schreiben.txt&quot;, ios::out );
   while( !f1.eof() ) {
      f1 &gt;&gt; c;
      cout &lt;&lt; c;
      f2 &lt;&lt; c;
   }
   return 0;
}
</code></pre>
<p>In der Datei lesen.txt steht folgender Text:</p>
<pre><code>hallo test
test
</code></pre>
<p>Die Ausgabe auf der Konsole lautet: hallotesttestt<br />
In der Datei schreiben.txt steht nach dem Ablauf des Programms: hallotesttestt</p>
<p>Das Leerzeichen und der Zeilenumbruch wurden ignoriert. Und warum auch immer wird das letzte Zeichen zweimal ausgegeben/in die Datei geschrieben.</p>
<p>Und wegen dem Auslesen Bit für Bit:</p>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>Zeichen für Zeichen auslesen und die einzelnen Bits aus den Zeichen extrahieren.</p>
</blockquote>
<p>1. Wie geht das?<br />
2. Funktioniert das auch, wenn die Datei binär vorliegt?</p>
<p>Mit freundlichen Grüßen<br />
DerRatlose</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624916</guid><dc:creator><![CDATA[DerRatlose]]></dc:creator><pubDate>Wed, 03 Dec 2008 13:02:50 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Fragen zum Lesen von Daten on Wed, 03 Dec 2008 14:27:49 GMT]]></title><description><![CDATA[<p>Ok, auf dieser Grundlage kann man weiterhelfen: Der Stream-Operator &gt;&gt; ist für Texte gedacht und liest logische Einheiten, die durch Whitespace (Leerzeichen, Tabulator, Zeilenumbruch, ...) getrennt sind. Bei einzelnen Zeichen mag man sich fragen, ob das Sinn macht, bei Einheiten wie Strings, Integern usw. macht es das aber durchaus.</p>
<p>Willst Du die Zeichen &quot;roh&quot; haben, musst Du das Überspringen von Whitespace deaktivieren, oder aber die Lesebefehle für physikalische Einheiten (read, readsome, get) verwenden. Letzteres könnte performanter sein.</p>
<pre><code class="language-cpp">char c;
while( f1.get( c ) &amp;&amp; !f1.eof() ) {
      cout &lt;&lt; c;
      f2 &lt;&lt; c;
}
</code></pre>
<p>Zur zweiten:<br />
Zeichenweises Auslesen geht wie oben. Bits kannst Du mit logischen Operatoren extrahieren (such mal nach Bitarithmetik), und das ganze funktioniert auch mit binären Dateien. Diesen solltest Du beim Öffnen allerdings zusätzlich das Flag ios::binary mitgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624959</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 03 Dec 2008 14:27:49 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Fragen zum Lesen von Daten on Wed, 03 Dec 2008 14:29:24 GMT]]></title><description><![CDATA[<p>Du kannst beim Öffnen der Datei das Flag <code>std::ios::binary</code> angeben, dann werden die Text-Routinen (z.B. das Auslassen von Leerzeichen) nicht angewandt.<br />
Das Kopieren einer Datei sieht dann etwa so aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

int main()
{
    ifstream in( &quot;lesen.txt&quot;, ios::binary );
    ofstream out( &quot;schreiben.txt&quot;, ios::binary );

    char buf[512];
	do
	{
		in.read( buf, 512 );
		out.write( buf, in.gcount() );
	} while ( in &amp;&amp; in.gcount()==512 );
}
</code></pre>
<p>Anm.: <a href="http://www.cplusplus.com/reference/iostream/istream/gcount.html" rel="nofollow">ifstream::gcount()</a> liefert die Anzahl der Bytes zurück, die beim letzten ungepufferten Lesevorgang gelesen wurden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624960</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 03 Dec 2008 14:29:24 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Fragen zum Lesen von Daten on Thu, 04 Dec 2008 19:01:03 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Tipps. Funktioniert alles sehr gut. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Ich weiß allerdings immer noch nichts mit der Bitarithmetik anzufangen... Kann man mir da vielleicht mal etwas mehr zu sagen?</p>
<p>Mit freundlichen Grüßen<br />
DerRatlose</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625615</guid><dc:creator><![CDATA[DerRatlose]]></dc:creator><pubDate>Thu, 04 Dec 2008 19:01:03 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Fragen zum Lesen von Daten on Thu, 04 Dec 2008 20:12:03 GMT]]></title><description><![CDATA[<p>DerRatlose schrieb:</p>
<blockquote>
<p>Ich weiß allerdings immer noch nichts mit der Bitarithmetik anzufangen... Kann man mir da vielleicht mal etwas mehr zu sagen?</p>
</blockquote>
<p>Na sischa: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39352.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39352.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625651</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 04 Dec 2008 20:12:03 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Fragen zum Lesen von Daten on Fri, 05 Dec 2008 14:36:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>danke für die Antwort. Hat mir schon weitergeholfen <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>Mit freundlichen Grüßen<br />
DerRatlose</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625835</guid><dc:creator><![CDATA[DerRatlose]]></dc:creator><pubDate>Fri, 05 Dec 2008 14:36:24 GMT</pubDate></item></channel></rss>