<?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[Problem mit Standard-Streams bwz. ifstream per Hand initialisieren]]></title><description><![CDATA[<p>Hi Leute!<br />
Falls &quot;iostream&quot; Profis da sind, bitte hersehen!</p>
<p>Ich will im Prinzip ifstream von Hand initialisieren.</p>
<p>Problem ganz kurz: bei der Ausgabe des 2. Buffer fehlen am Anfang Zeichen.</p>
<p>Hier mal der Code:</p>
<pre><code class="language-cpp">ifstream A(&quot;u.txt&quot;,ios::in);

	if(!A.good())
	{
		cout&lt;&lt;&quot;File not Found!&quot;&lt;&lt;endl;
		return(1);
	}

	A.seekg (0, ios::end);
    int Size= A.tellg();
    A.seekg (0, ios::beg);

	char *Buffer= new char[Size];
	A.read(Buffer, Size);

	cout&lt;&lt;Buffer&lt;&lt;endl;

	cout&lt;&lt;endl&lt;&lt;endl&lt;&lt;endl;

	ifstream B;
	B.rdbuf()-&gt;pubsetbuf(Buffer, Size);

	delete[] Buffer;
	Buffer= new char[Size];

	B.read(Buffer, Size);

	cout&lt;&lt;Buffer&lt;&lt;endl;
</code></pre>
<p>u.txt ist eine ganz normale txt.</p>
<p>Bitte um Hilfe!<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224845/problem-mit-standard-streams-bwz-ifstream-per-hand-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 23:16:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224845.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Oct 2008 18:01:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Wed, 15 Oct 2008 18:58:50 GMT]]></title><description><![CDATA[<p>Hi Leute!<br />
Falls &quot;iostream&quot; Profis da sind, bitte hersehen!</p>
<p>Ich will im Prinzip ifstream von Hand initialisieren.</p>
<p>Problem ganz kurz: bei der Ausgabe des 2. Buffer fehlen am Anfang Zeichen.</p>
<p>Hier mal der Code:</p>
<pre><code class="language-cpp">ifstream A(&quot;u.txt&quot;,ios::in);

	if(!A.good())
	{
		cout&lt;&lt;&quot;File not Found!&quot;&lt;&lt;endl;
		return(1);
	}

	A.seekg (0, ios::end);
    int Size= A.tellg();
    A.seekg (0, ios::beg);

	char *Buffer= new char[Size];
	A.read(Buffer, Size);

	cout&lt;&lt;Buffer&lt;&lt;endl;

	cout&lt;&lt;endl&lt;&lt;endl&lt;&lt;endl;

	ifstream B;
	B.rdbuf()-&gt;pubsetbuf(Buffer, Size);

	delete[] Buffer;
	Buffer= new char[Size];

	B.read(Buffer, Size);

	cout&lt;&lt;Buffer&lt;&lt;endl;
</code></pre>
<p>u.txt ist eine ganz normale txt.</p>
<p>Bitte um Hilfe!<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599560</guid><dc:creator><![CDATA[Blaze]]></dc:creator><pubDate>Wed, 15 Oct 2008 18:58:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Wed, 15 Oct 2008 18:30:30 GMT]]></title><description><![CDATA[<p>Ich weiss nicht, ob das den Fehler verursacht, aber mit <code>new[]</code> angelegter Speicher muss entsprechend mit <code>delete[]</code> freigegeben werden.</p>
<pre><code class="language-cpp">delete Buffer;   // ist also falsch.
delete[] Buffer; // wäre richtig.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1599579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599579</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 15 Oct 2008 18:30:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Wed, 15 Oct 2008 18:41:57 GMT]]></title><description><![CDATA[<p>Nein daran hat's nicht gelegen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599591</guid><dc:creator><![CDATA[Blaze]]></dc:creator><pubDate>Wed, 15 Oct 2008 18:41:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Wed, 15 Oct 2008 18:46:58 GMT]]></title><description><![CDATA[<p>In dem Code hat es meiner Meinung nach zwei Fehler, ich kommentiere sie mal rein in den Code:</p>
<pre><code class="language-cpp">ifstream A(&quot;u.txt&quot;,ios::in);

	if(!A.good())
	{
		cout&lt;&lt;&quot;File not Found!&quot;&lt;&lt;endl;
		return(1);
	}

	A.seekg (0, ios::end);
    int Size= A.tellg();
    A.seekg (0, ios::beg);

	char *Buffer= new char[Size];
	A.read(Buffer, Size);

	cout&lt;&lt;Buffer&lt;&lt;endl; // Fehler! Undefiniertes Verhalten! Buffer hat keine Null-Terminierung.
	// Besser wäre wohl sowas:
	cout &lt;&lt; string(Buffer, Size) &lt;&lt; endl;

	cout&lt;&lt;endl&lt;&lt;endl&lt;&lt;endl;

	ifstream B;
	B.rdbuf()-&gt;pubsetbuf(Buffer, Size);

	delete[] Buffer; // Das könnte wohl auch zu einem Fehler führen.
        // B.rdbuf()-&gt;pubsetbuf(Buffer, Size) kopiert glaub ich nicht das Array,
	// sondern ersetzt es intern. Du löchst aber nun den Speicherbereich und 
	// verwendest ihn dann später. Das ist dann wohl garantiert undefiniertes Verhalten.
	Buffer= new char[Size];

	B.read(Buffer, Size);

	cout&lt;&lt;Buffer&lt;&lt;endl;
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599595</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 15 Oct 2008 18:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Wed, 15 Oct 2008 19:12:02 GMT]]></title><description><![CDATA[<p>std::vector statt char*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599598</guid><dc:creator><![CDATA[nochwas]]></dc:creator><pubDate>Wed, 15 Oct 2008 19:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Wed, 15 Oct 2008 19:54:53 GMT]]></title><description><![CDATA[<p>nochwas schrieb:</p>
<blockquote>
<p>std::vector statt char*</p>
</blockquote>
<p>Nur wird als Puffer ein <code>char*</code> benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599613</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 15 Oct 2008 19:54:53 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Wed, 15 Oct 2008 20:02:31 GMT]]></title><description><![CDATA[<p>Blaze schrieb:</p>
<blockquote>
<pre><code class="language-cpp">ifstream A(&quot;u.txt&quot;,ios::in);

	if(!A.good())
	{
		cout&lt;&lt;&quot;File not Found!&quot;&lt;&lt;endl;
		return(1);
	}

	A.seekg (0, ios::end);
    int Size= A.tellg();
    A.seekg (0, ios::beg);

	char *Buffer= new char[Size];
	A.read(Buffer, Size);

	cout&lt;&lt;Buffer&lt;&lt;endl;

	cout&lt;&lt;endl&lt;&lt;endl&lt;&lt;endl;

	ifstream B;
	B.rdbuf()-&gt;pubsetbuf(Buffer, Size);

	delete[] Buffer;
	Buffer= new char[Size];

	B.read(Buffer, Size);

	cout&lt;&lt;Buffer&lt;&lt;endl;
</code></pre>
</blockquote>
<p>Wozu machst du sowas ? Vllt. wäre istringstream was für dich:</p>
<pre><code class="language-cpp">ifstream input(&quot;u.txt&quot;);
istream_iterator&lt;char&gt; start(input), end;

string buffer(start, end);

istringstream istr(buffer);
istr &gt;&gt; buffer;
</code></pre>
<p>Einen Sinn endeckte ich aber darin immernoch nicht <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1599617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599617</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 15 Oct 2008 20:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Wed, 15 Oct 2008 20:03:31 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>nochwas schrieb:</p>
<blockquote>
<p>std::vector statt char*</p>
</blockquote>
<p>Nur wird als Puffer ein <code>char*</code> benötigt.</p>
</blockquote>
<p>&amp;vec[0] ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599618</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 15 Oct 2008 20:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Thu, 16 Oct 2008 13:39:27 GMT]]></title><description><![CDATA[<p>Danke für eure Hilfe!<br />
Ich hab das Problem inzwischen anders gelöst, über virtuelle Datein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599954</guid><dc:creator><![CDATA[Blaze]]></dc:creator><pubDate>Thu, 16 Oct 2008 13:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Fri, 17 Oct 2008 04:54:39 GMT]]></title><description><![CDATA[<p>Blaze schrieb:</p>
<blockquote>
<p>Danke für eure Hilfe!<br />
Ich hab das Problem inzwischen anders gelöst, über virtuelle Datein</p>
</blockquote>
<p>Was aber rein gar nichts mit dem Fehler zu tun hat. Aber anscheinend hast du alles neu geschrieben und wahrscheinlich auch sinnvolleren Code produziert. <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/1600199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600199</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 17 Oct 2008 04:54:39 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Standard-Streams bwz. ifstream per Hand initialisieren on Fri, 17 Oct 2008 20:00:36 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>wahrscheinlich auch sinnvolleren Code produziert. <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>
</blockquote>
<p>Jein!<br />
Erst hatte ich ifstream zum Einlesen gekapselt, das habe ich aber durch eine eigene Klasse für virtuelle Datein ersetzt.<br />
Damit muss ich nicht zum Beispiel Speicherblöcke aus geladenen Windows-Resourcen in den Puffer von istream legen, etc. Sondern habe jetzt alles schön in einer Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600617</guid><dc:creator><![CDATA[Blaze]]></dc:creator><pubDate>Fri, 17 Oct 2008 20:00:36 GMT</pubDate></item></channel></rss>