<?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[Datei Binär lesen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>so langsam komme ich hier echt ins zweifeln.</p>
<p>Ich versuche jetzt schon seid 3 Tagen eine Kopie von einer Binärdatei zu erstellen, aber kein Erfolg bis jetzt leider.</p>
<p>Erst habe ich die Datei Binär geöffnet und Zeilenweise gelesen. Dazu habe ich mit CStdioFile gearbeitet.</p>
<p>Das klappte nicht, weil der einige Zeichen wie z.B. hex0A nicht richtig ausgelesen hat und auch nicht richtig zurück geschrieben hat.</p>
<p>Dann bin ich auf das normale C runter und habe die Datei echt zeichenweise schreiben lassen.</p>
<p>Jetzt habe ich das Phänomen, dass er mir anstatt nur einfach hex0A schreibt, gleich hex0Dhex0A schreibt.</p>
<p>Ich habe keine Ahnung mehr, wie ich das jetzt noch machen soll.</p>
<p>Bitte hilfe...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191437/datei-binär-lesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 04:38:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191437.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Sep 2007 10:19:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 10:19:47 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>so langsam komme ich hier echt ins zweifeln.</p>
<p>Ich versuche jetzt schon seid 3 Tagen eine Kopie von einer Binärdatei zu erstellen, aber kein Erfolg bis jetzt leider.</p>
<p>Erst habe ich die Datei Binär geöffnet und Zeilenweise gelesen. Dazu habe ich mit CStdioFile gearbeitet.</p>
<p>Das klappte nicht, weil der einige Zeichen wie z.B. hex0A nicht richtig ausgelesen hat und auch nicht richtig zurück geschrieben hat.</p>
<p>Dann bin ich auf das normale C runter und habe die Datei echt zeichenweise schreiben lassen.</p>
<p>Jetzt habe ich das Phänomen, dass er mir anstatt nur einfach hex0A schreibt, gleich hex0Dhex0A schreibt.</p>
<p>Ich habe keine Ahnung mehr, wie ich das jetzt noch machen soll.</p>
<p>Bitte hilfe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357727</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 03 Sep 2007 10:19:47 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 10:26:51 GMT]]></title><description><![CDATA[<p>Vielleicht ifstream/ofstream mit ios::binary benutzen???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357732</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Mon, 03 Sep 2007 10:26:51 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 10:51:41 GMT]]></title><description><![CDATA[<p>Wenn es nur um die Kopie geht:</p>
<p>=&gt; CopyFile oder CopyFileEx</p>
<p><a href="http://msdn2.microsoft.com/en-us/library/aa363851.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/aa363851.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357757</guid><dc:creator><![CDATA[tvdog]]></dc:creator><pubDate>Mon, 03 Sep 2007 10:51:41 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 10:57:19 GMT]]></title><description><![CDATA[<p>nee, schön wäre es. ich muss die daten hinterher leider weiter bearbeiten, deswegen muss ich die komplette datei lesen.</p>
<p>ich hab des jetzt so gemacht:</p>
<pre><code class="language-cpp">ifstream in(&quot;C:\\temp\\Neu1.pdf&quot;,ios::in | ios::binary);
	while (! in.eof() )
	{
		char ch;
		in &gt;&gt; ch;
		str_Zeile.Format(&quot;%c&quot;,ch);
		str_Daten += str_Zeile;
	};
	in.close();

	ofstream out(&quot;C:\\temp\\jetztaber.pdf&quot;,ios::out | ios::binary);
	for ( int i = 0; i &lt; str_Daten.GetLength(); i++ )
	{
		char test[1] = {str_Daten.GetAt(i)};
		out &lt;&lt;test[0];
	};
	out.close();
</code></pre>
<p>aber da hab ich immer noch das gleiche, dass er Sonderzeichen wie hex0A erst gar nicht &quot;liest&quot;...</p>
<p>ihr könnt es ja einfach mal selber ausprobieren.</p>
<p>die Datei, die eingelesen wird, ist eine original PDF und die datei, die ich dann schreiben lasse, soll eine 1:1 kopie sein.</p>
<p>Wenn ihr dann versucht, die erstellte datei zu öffnen, kommt er mit nem Fehler. wenn ihr dann die datei im Hexeditor öffnet seht ihr, dass hex0A als erstes beispiel gar nicht dort vorhanden ist. <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/1357760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357760</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 03 Sep 2007 10:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 10:55:50 GMT]]></title><description><![CDATA[<p>Bei ifstream benutze die Memberfunktionen read und write...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357763</guid><dc:creator><![CDATA[..........]]></dc:creator><pubDate>Mon, 03 Sep 2007 10:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 11:03:57 GMT]]></title><description><![CDATA[<p>ja ok</p>
<p>habe ich jetzt so gemacht:</p>
<pre><code class="language-cpp">ifstream in(&quot;C:\\temp\\Neu1.pdf&quot;,ios::in | ios::binary);
	int length;
	char * buffer;
	//while (! in.eof() )
	//{
		in.seekg (0, ios::end);
		length = in.tellg();
		in.seekg (0, ios::beg);

		// allocate memory:
		buffer = new char [length];

		// read data as a block:
		in.read (buffer,length);	
	//};
	in.close();
</code></pre>
<p>sieht soweit schon ganz gut aus.</p>
<p>problem: im buffer steht nicht alles bis dateiende drin. hat das was mit der 256 zeichen begrenzung zu tun? weil eigentlich allokiere ich doch in einer größe der datei oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357774</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 03 Sep 2007 11:03:57 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 11:38:58 GMT]]></title><description><![CDATA[<p>und wie stellst du fest das nicht alles drin steht? gibst du den buffer in der console aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357792</guid><dc:creator><![CDATA[..........]]></dc:creator><pubDate>Mon, 03 Sep 2007 11:38:58 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 12:30:43 GMT]]></title><description><![CDATA[<p>Nur um dich zu beruhigen: Im Buffer stehen mit Sicherheit alle Daten drin, die du eingelesen hast - nur bei der Ausgabe werden sie möglicherweise etwas gekürzt (\0 geht fast überall als Stringende-Zeichen durch, d.h. wenn du die Daten ausgeben willst, werden sie nur bis zum ersten Null-Byte geschrieben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357852</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 03 Sep 2007 12:30:43 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 18:23:44 GMT]]></title><description><![CDATA[<p>ich kann das sehen indem ich die datei im hexedit öffne <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>
<p>gut, und wie kann ich dann über die \0 terminierung heraus weiter schreiben lassen?</p>
<p>ps: wenn ich aber debugge und mir den inhalt vom buffer anschaue, steht dort genau das gleiche drin wie später in der ausgabe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358212</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 03 Sep 2007 18:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 18:56:38 GMT]]></title><description><![CDATA[<p>!!! PROBLEMLÖSUNG !!!</p>
<p>sooooooooo, nach undendlich gescheiterten versuchen freue ich mich, die Lösung präsentieren zu dürfen.</p>
<p>vielleicht wäre das ja mal was für die FAQ beim normalen C++ weil ich ja so keine MFC <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>
<pre><code class="language-cpp">while (! in.eof() )
	{
		char c;
		c = in.get();       // get character from file
		str_Zeile.Format(&quot;%c&quot;,c);
		str_Daten += str_Zeile;
	};

	in.close();
</code></pre>
<p>so, jetzt ist es möglich dort eine 1:1 kopie von binären Dateien zu erstellen (\0 terminierung ist da auch kein problem mehr)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358255</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 03 Sep 2007 18:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 19:52:24 GMT]]></title><description><![CDATA[<p>Bitte nicht in die FAQ übernehmen, der Code ist GROTTIG <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1358303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358303</guid><dc:creator><![CDATA[CodeBuster]]></dc:creator><pubDate>Mon, 03 Sep 2007 19:52:24 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 19:59:36 GMT]]></title><description><![CDATA[<p>ok, dann mach mir einen vorschlag und sag mir nen code, wie es bitte anders funktioniert</p>
<p>ich denke du wirst den post hier komplett gelesen haben</p>
<p>also probier es bitte selber mit einer pdf aus und dann schick mit deine lösung</p>
<p>bin für jeden besseren vorschlag dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358310</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 03 Sep 2007 19:59:36 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Mon, 03 Sep 2007 21:39:20 GMT]]></title><description><![CDATA[<p>Also ganz primitiv wäre das mal so zu machen (wenn du die ganze Datei in einen Puffer kopieren willst):</p>
<pre><code class="language-cpp">void read_file(char const* path, std::vector&lt;char&gt;&amp; data)
{
	data.clear();
	std::ifstream is(path, std::ios::binary);

	for (;;)
	{
		std::ifstream::int_type ch = is.get();
		if (ch != std::ifstream::traits_type::eof())
			data.push_back(ch);
		else
			break;
	}
}

void write_file(char const* path, std::vector&lt;char&gt; const&amp; data)
{
	std::ofstream os(path, std::ios::binary);
	os.write(&amp;(data[0]), data.size());
	os.flush();
	if (!os.good())
		throw std::runtime_error(&quot;Write error.&quot;);
}
</code></pre>
<p>BTW: kann mir jemand verraten wie man bei einem basic_istream unterscheiden kann ob der Input &quot;zu ende&quot; ist, oder ein IO Fehler vorliegt? basic_istream::eof() liefert ja erst true zurück NACHDEM man schon versucht hat das letzte Zeichen zu lesen, und wenn man das versucht hat bekommt man sofort eofbit und failbit gesetzt.</p>
<p>Wäre dafür &quot;badbit&quot; vorgesehen? Wenn ja ist die Implementierung vom MSVC ziemlicher Müll, da die bei Verwendung von &quot;get&quot; das &quot;badbit&quot; NIE setzt - auch nicht wenn das Lesen auf Grund eines IO Fehlers fehlgeschlagen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358361</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 03 Sep 2007 21:39:20 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Tue, 04 Sep 2007 06:30:10 GMT]]></title><description><![CDATA[<p>Ich finde es geht auch sehr gut mit der MFC:</p>
<pre><code class="language-cpp">CFile copy(_T(&quot;C:\\TESTCOPY.PDF&quot;), CFile::modeCreate|CFile::modeWrite);
		CFile file(_T(&quot;C:\\TESTPDF.PDF&quot;), CFile::modeRead);
		BYTE cbBuffer[512] = {0};
		UINT nBytes = 0;
		do {
				nBytes = file.Read(cbBuffer, 512);
				copy.Write(cbBuffer, nBytes);
		} while(nBytes &gt;= 512);
		file.Close();
		copy.Close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1358435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358435</guid><dc:creator><![CDATA[CFile]]></dc:creator><pubDate>Tue, 04 Sep 2007 06:30:10 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Tue, 04 Sep 2007 06:35:08 GMT]]></title><description><![CDATA[<p>Es gibt, wie tvdog bereits beschrieben <em>und</em> verlinkt hat, fertige Funktionen zu diesem Zweck.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358441</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 04 Sep 2007 06:35:08 GMT</pubDate></item><item><title><![CDATA[Reply to Datei Binär lesen on Tue, 04 Sep 2007 08:01:22 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>: Am Dateiende sind eofbit und failbit gesetzt, bei einem &quot;normalen&quot; Einlesefehler nur das failbit (ist vor allem interessant, wenn du formatiert einliest - get() schluckt alles, was ankommt). badbit steht für katastrophale Fehler, bei denen der Stream praktisch zerstört ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358490</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 04 Sep 2007 08:01:22 GMT</pubDate></item></channel></rss>