<?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[Buffer]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte Daten aus einem Stream lesen und je nach Inhalt<br />
brauche ich mal mehr mal weniger Bytes.<br />
Jetzt hab ich ja die Möglichkeit mit realloc meinen bisherigen<br />
Speicherplatz zu vergrößern. Jetzt hab ich zum beispiel 4KB<br />
eingelesen und benötige in den ersten 3 KBs die Daten nicht mehr.<br />
Kann ich die irgendwie schon freigeben, oder muss ich dann manuell<br />
in einen neuen Speicherbereich (bzw. an den Anfang des existierenden)<br />
kopieren (und freigeben natürlich bei neuer Speicheranforderun)?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
<p>EDIT: Nach Möglichkeit unter Verwendung der Standardlibrary</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161674/buffer</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 03:02:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161674.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Oct 2006 03:42:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Buffer on Tue, 10 Oct 2006 03:44:27 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte Daten aus einem Stream lesen und je nach Inhalt<br />
brauche ich mal mehr mal weniger Bytes.<br />
Jetzt hab ich ja die Möglichkeit mit realloc meinen bisherigen<br />
Speicherplatz zu vergrößern. Jetzt hab ich zum beispiel 4KB<br />
eingelesen und benötige in den ersten 3 KBs die Daten nicht mehr.<br />
Kann ich die irgendwie schon freigeben, oder muss ich dann manuell<br />
in einen neuen Speicherbereich (bzw. an den Anfang des existierenden)<br />
kopieren (und freigeben natürlich bei neuer Speicheranforderun)?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
<p>EDIT: Nach Möglichkeit unter Verwendung der Standardlibrary</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151910</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Tue, 10 Oct 2006 03:44:27 GMT</pubDate></item><item><title><![CDATA[Reply to Buffer on Tue, 10 Oct 2006 06:27:57 GMT]]></title><description><![CDATA[<p>realloc() kopiert dir selbständig den alten Speicherinhalt - allerdings genau den Anfangsblock, den du nicht mehr benötigst. Also mußt du die Daten von Hand umkopieren, indem du den hintersten Teil deiner Daten vor dem realloc() nach vorne verschiebst.</p>
<p>(ehe ich es vergesse - dafür kannst du die Funktion <a href="http://man.cx/memmove" rel="nofollow">man: memmove</a> verwenden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151923</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 10 Oct 2006 06:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to Buffer on Sun, 15 Oct 2006 23:56:04 GMT]]></title><description><![CDATA[<p>Ich hab gerade mal etwas gegoogelt und<br />
bin gerade auf den std::stringbuf bestossen.<br />
Mach der nicht beim Aufruf von setg() genau das, was ich wollte?</p>
<p>Also verwirft er den Teil vor dem ersten Parameter oder wofür sind die Grenzen?</p>
<p>Vielen Dank,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155347</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Sun, 15 Oct 2006 23:56:04 GMT</pubDate></item><item><title><![CDATA[Reply to Buffer on Mon, 16 Oct 2006 07:00:02 GMT]]></title><description><![CDATA[<p>std::stringbuf ist c++.</p>
<p>bei welcher sprache willst du nun bleiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155401</guid><dc:creator><![CDATA[c.rackwitz]]></dc:creator><pubDate>Mon, 16 Oct 2006 07:00:02 GMT</pubDate></item><item><title><![CDATA[Reply to Buffer on Mon, 16 Oct 2006 07:58:06 GMT]]></title><description><![CDATA[<p>stringbuffer werden intern von stringstreams verwendet, um die eingegebenen Daten zu verwalten. Und setg() setzt dort drin eine interne Markierung, wo die Daten beginnen bzw. enden - das löscht und verschiebt überhaupt nichts.</p>
<p>Wenn du wirklich mit C++ arbeiten willst, solltest du einen std::string verwenden, dort die Daten per append()/push_back() anhängen und mit erase() am vorderen Ende wieder löschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155441</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 16 Oct 2006 07:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Buffer on Mon, 16 Oct 2006 11:57:43 GMT]]></title><description><![CDATA[<p>Danke CStoll...</p>
<p>und in welcher Datenstruktur verwaltest du die Daten, wenn es<br />
Binärdaten sind?<br />
Auch in std::string?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155658</guid><dc:creator><![CDATA[*Cpp-Anfänger* 0]]></dc:creator><pubDate>Mon, 16 Oct 2006 11:57:43 GMT</pubDate></item><item><title><![CDATA[Reply to Buffer on Mon, 16 Oct 2006 12:01:49 GMT]]></title><description><![CDATA[<p>Ja, kann man auch machen, aber dann eher std::vector&lt;...&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155660</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 16 Oct 2006 12:01:49 GMT</pubDate></item><item><title><![CDATA[Reply to Buffer on Mon, 16 Oct 2006 16:02:19 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=13512" rel="nofollow">c.rackwitz</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=10" rel="nofollow">ANSI C</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1155837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1155837</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 16 Oct 2006 16:02:19 GMT</pubDate></item><item><title><![CDATA[Reply to Buffer on Tue, 17 Oct 2006 00:47:29 GMT]]></title><description><![CDATA[<p>Wenns nicht Performance-kritisch ist einfach einen std::vector&lt;char&gt; / std::vector&lt;unsigned char&gt; verwenden und dort erase() aufrufen wenn du den Anfang nichtmehr brauchst. Wenns allerdings Performance-kritisch ist bastel dir einen Ring-Buffer der realloc-fähig ist. Zur Implementierung kannst du entweder einen std::vector verwenden, oder eine std::deque, wobei die std::deque dann aber schön grosse Klötze als Element haben sollte (definitiv &gt; 1kb) -- oder natürlich alles selbst wasteln, aber das wäre ein IMHO unnötiger Aufwand.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1156002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1156002</guid><dc:creator><![CDATA[Plotzenhotz]]></dc:creator><pubDate>Tue, 17 Oct 2006 00:47:29 GMT</pubDate></item></channel></rss>