<?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[ifstream]]></title><description><![CDATA[<p>Also zu erst mal: es sollen auch nicht ASCII-Dateien gelesen werden können...</p>
<pre><code class="language-cpp">void writebuf (unsigned __int32 laenge)
	{
		buf = new char[laenge+1]; //deklariert als 'char *buf'
		memset (buf, 0, laenge+1); //wahrscheinlich unnötig?
		stream-&gt;seekg ((actpart-1) * partsize, ios::beg); //da die Datei in mehrere Parts zerlegt wird, muss er erst mal gucken, wo er anfangen soll zu lesen ^^
		do
			{
				char *buf2 = new char[laenge - strlen (buf)+1];
				stream-&gt;read (buf2, laenge - strlen (buf));
				sprintf (buf, &quot;%s%s&quot;, buf, buf2);
			} while (strlen (buf) &lt; laenge);
		buf[laenge+1] = '\0';
	};
</code></pre>
<p>jz habe ich zwar endlich nicht nur die ersten 5 Zeichen der Datei, aber am ende des buffers (buf) stehen trotzdem noch hunderte Zeichen, die einfach nur Müll sind - und die ersten Zeichen sind auch weg : &lt; Und die ersten 5 Zeichen sind auch wieder falsch (nachdem sie am Anfang die ganze Zeit richtig waren ^^) -.-<br />
Außerdem geb ich das Zeugs (bis jz einfach aus, um zu gucken, wie es aussieht und nicht jedes ma mit Haltepunkten da durch zu müssen - kann ich da z.bsp. dieses Piepen deaktivieren? (bis jz mach ich es mit cout &lt;&lt; ... &lt;&lt; endl und bei jedem (was auch immer dieses Steuerzeichen ist - weiß ich ne ausm Kopf ) - piept mein PC doof - das nervt auch ein wenig ^^</p>
<p>Wäre euch sehr dankbar über Hilfe (ich weiß, das Thema gabs schon hunderte male, aber da war es immer nur zeichenweise auslesen/ascii/... - oder ich war zu doof, zu suchen ^^)</p>
<p>btw: das Senden dann so stimmt aber, oder:</p>
<pre><code class="language-cpp">//char *buf (der oben ausgelesene Buffer)
send ((SOCKET) s, buf, strlen (buf), MSG_OOB)
</code></pre>
<p>Danke Tom : &gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199060/ifstream</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 18:25:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199060.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Nov 2007 15:05:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:05:38 GMT]]></title><description><![CDATA[<p>Also zu erst mal: es sollen auch nicht ASCII-Dateien gelesen werden können...</p>
<pre><code class="language-cpp">void writebuf (unsigned __int32 laenge)
	{
		buf = new char[laenge+1]; //deklariert als 'char *buf'
		memset (buf, 0, laenge+1); //wahrscheinlich unnötig?
		stream-&gt;seekg ((actpart-1) * partsize, ios::beg); //da die Datei in mehrere Parts zerlegt wird, muss er erst mal gucken, wo er anfangen soll zu lesen ^^
		do
			{
				char *buf2 = new char[laenge - strlen (buf)+1];
				stream-&gt;read (buf2, laenge - strlen (buf));
				sprintf (buf, &quot;%s%s&quot;, buf, buf2);
			} while (strlen (buf) &lt; laenge);
		buf[laenge+1] = '\0';
	};
</code></pre>
<p>jz habe ich zwar endlich nicht nur die ersten 5 Zeichen der Datei, aber am ende des buffers (buf) stehen trotzdem noch hunderte Zeichen, die einfach nur Müll sind - und die ersten Zeichen sind auch weg : &lt; Und die ersten 5 Zeichen sind auch wieder falsch (nachdem sie am Anfang die ganze Zeit richtig waren ^^) -.-<br />
Außerdem geb ich das Zeugs (bis jz einfach aus, um zu gucken, wie es aussieht und nicht jedes ma mit Haltepunkten da durch zu müssen - kann ich da z.bsp. dieses Piepen deaktivieren? (bis jz mach ich es mit cout &lt;&lt; ... &lt;&lt; endl und bei jedem (was auch immer dieses Steuerzeichen ist - weiß ich ne ausm Kopf ) - piept mein PC doof - das nervt auch ein wenig ^^</p>
<p>Wäre euch sehr dankbar über Hilfe (ich weiß, das Thema gabs schon hunderte male, aber da war es immer nur zeichenweise auslesen/ascii/... - oder ich war zu doof, zu suchen ^^)</p>
<p>btw: das Senden dann so stimmt aber, oder:</p>
<pre><code class="language-cpp">//char *buf (der oben ausgelesene Buffer)
send ((SOCKET) s, buf, strlen (buf), MSG_OOB)
</code></pre>
<p>Danke Tom : &gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411641</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:05:38 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:11:51 GMT]]></title><description><![CDATA[<p>Du solltest den Buffer nach der Menge der eingelesenen Zeichen mit 0 terminieren, nicht nach der gesamten allozierten Länge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411649</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:11:51 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:14:48 GMT]]></title><description><![CDATA[<p>Wieso liest du eigentlich nicht direkt in deinen Buffer? So öffnest du dir nur ein riesiges Speicherleckt (von anderen Problemen gar nicht zu reden).</p>
<p>Ansonsten: Bei Binärdaten ist das '\0' ein ganz normales Zeichen und kann auch mitten in den Daten vorkommen - da bringt es recht wenig, mit strlen() die gelesene Datenmenge ermitteln zu wollen. Wenn du wissen willst, wieviel gerade angekommen ist, nimm lieber stream-&gt;gcount().<br />
(und wenn read() tatsächlich weniger Daten bekommen hat als du wolltest, ist wohl die Datei zu Ende gewesen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411652</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:14:48 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:18:21 GMT]]></title><description><![CDATA[<p>The-Kenny schrieb:</p>
<blockquote>
<p>Du solltest den Buffer nach der Menge der eingelesenen Zeichen mit 0 terminieren, nicht nach der gesamten allozierten Länge.</p>
</blockquote>
<p>Danke - klingt ja ganz gut, aber so weit ich weiß, bietet ifstream keine fkt an, die mir irgendwo wiedergibt, wie viele Zeichen ausgelesen wurden... Und wenn ich die 0 mit buf[strlen(buf)] setze hab ich auch nichts gekonnt, weil strlen ja gerad eben nach der 0 guckt, die ich erst noch setzen will - oder?</p>
<p>//edit:<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: Nein, die Datei ist noch nicht zu Ende... Sie ist ca. 10MB groß (hab gerad ne docx genommen) und read gibt mir trotzdem immer nur 5 Zeichen wieder - wenn ich die Datei im notepad/direkt in der Konsole angucke, dann sieht man da auch, dass nach diesen 5 Zeichen ein Stück Platz ist...<br />
Warum nicht direkt aus dem Stream: Weil ich dann nicht weiß, wie viel er ausgelesen hat? -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411653</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:18:21 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:18:19 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>The-Kenny schrieb:</p>
<blockquote>
<p>Du solltest den Buffer nach der Menge der eingelesenen Zeichen mit 0 terminieren, nicht nach der gesamten allozierten Länge.</p>
</blockquote>
<p>Danke - klingt ja ganz gut, aber so weit ich weiß, bietet ifstream keine fkt an, die mir irgendwo wiedergibt, wie viele Zeichen ausgelesen wurden...</p>
</blockquote>
<p>Doch, bietet es - gcount()<br />
(oder du verwendest readsome(), das gibt die Anzahl der gelesenen Zeichen als Rückgabewert raus)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411656</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:23:41 GMT]]></title><description><![CDATA[<p>Danke : &gt;<br />
readsome klang auch sehr gut, aber iwie... :</p>
<pre><code class="language-cpp">stream-&gt;seekg ((actpart-1) * partsize, ios::beg);
	streamsize l = stream-&gt;readsome (buf, laenge);
</code></pre>
<p>l == 0<br />
buf == &quot;&quot;</p>
<p>ist iwas falsch daran? Oo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411663</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:31:12 GMT]]></title><description><![CDATA[<p>Ich hoffe mal, die Datei ist groß genug, daß deine Startposition noch vor dem EOF liegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411667</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:31:12 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:33:35 GMT]]></title><description><![CDATA[<p>ja ^^<br />
&quot;Sie ist ca. 10MB groß (hab gerad ne docx genommen)&quot;<br />
und nach den 5 Zeichen geht es ja auch noch weiter ^^ das ging auch zum Teil ganz gut mit dem oben geposteten code - wobei ganz gut nicht heißt, dasses ohne fehler ging ^^ nur eben besser, als ich es ansonsten hinbekommen hatte -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411669</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:33:35 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:37:14 GMT]]></title><description><![CDATA[<p>Dann solltest du eventuell mal überprüfen, ob von früheren Aktionen noch Fehlerflags im Stream gesetzt sind (ist so eine Eigenheit der IO-Streams - solange der Status nicht auf goodbit steht, weigern sie sich, etwas zu machen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411676</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:37:14 GMT</pubDate></item><item><title><![CDATA[Reply to ifstream on Wed, 28 Nov 2007 15:45:19 GMT]]></title><description><![CDATA[<p>hmm...</p>
<pre><code class="language-cpp">stream-&gt;seekg ((actpart-1) * partsize, ios::beg);
stream-&gt;clear ();
streamsize l = stream-&gt;readsome (buf, laenge);
</code></pre>
<p>bringt keine besserung -.-<br />
und wenn ich statt readsome read nehm, dann geht es ja auch - also bis zu dem ersten byte, was leer ist oder wie auch immer ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411682</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 28 Nov 2007 15:45:19 GMT</pubDate></item></channel></rss>