<?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[stringstream problem]]></title><description><![CDATA[<p>hola leute</p>
<p>hab mir einen socketstream gestrickt um texte aus dem inet zu laden.<br />
beim empfang stopfe ich nun alles in einen stringstream damit ich dann den text spaeter parsen oder speichern kann.<br />
mein problem ist nun das die ersten 8 zeichen im stringstream immer muell sind</p>
<p>ne ausgabe:</p>
<pre><code>(­!(­!E html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
</code></pre>
<p>mein socketstream liefert aber alles korrekt. hab ich nachgeprueft.</p>
<p>hab es derzeit folgendermassen:</p>
<pre><code class="language-cpp">void HtmlConnection::RecvContent(void)
{
   string_stream.str(&quot;&quot;); /* stringstream loeschen */
   string_stream.clear(); /* flags loeschen */

   if(response.GetTransferType() == HttpResponse::close)
   {
      while(!stream.eof())
      {
         char c;
	 stream.read(&amp;c, 1);
	 string_stream.write(&amp;c, 1);
      }
   }
   else if(response.GetTransferType() == HttpResponse::size)
   {
      int len = std::atoi(response.GetParam(&quot;content-length&quot;).c_str());

      for(int i = 0;i &lt; len;++i)
      {
         char c;
         stream.read(&amp;c, 1);
         string_stream.write(&amp;c, 1);
      }
   }
   else 
   {
      int value;

      do
      {
         std::string temp;
         std::getline(stream, temp);
         value = hex_to_int(temp);

         for(int i = 0;i &lt; value;++i)
         {
            char c;
            stream.read(&amp;c, 1); /* das ist mein socketstream (1) */
            string_stream.write(&amp;c, 1);
         }
         std::getline(stream, temp); /* letztes new-line rausnehmen */
      } while(value != 0);
   }
</code></pre>
<p>bei (1) hab ich dann schrittweise nachgesehen was da reinkommt, und da ist es in ordnung.<br />
wenn ich nun aber den stringstream mit</p>
<pre><code class="language-cpp">string_stream.str().c_str()
</code></pre>
<p>ausgebe, bzw in einem TMemo anzeigen lasse, stimmen eben die ersten 8 zeichen nicht.</p>
<p>was mach ich da falsch ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221619/stringstream-problem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 02:28:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221619.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Sep 2008 10:28:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to stringstream problem on Mon, 01 Sep 2008 10:28:55 GMT]]></title><description><![CDATA[<p>hola leute</p>
<p>hab mir einen socketstream gestrickt um texte aus dem inet zu laden.<br />
beim empfang stopfe ich nun alles in einen stringstream damit ich dann den text spaeter parsen oder speichern kann.<br />
mein problem ist nun das die ersten 8 zeichen im stringstream immer muell sind</p>
<p>ne ausgabe:</p>
<pre><code>(­!(­!E html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
</code></pre>
<p>mein socketstream liefert aber alles korrekt. hab ich nachgeprueft.</p>
<p>hab es derzeit folgendermassen:</p>
<pre><code class="language-cpp">void HtmlConnection::RecvContent(void)
{
   string_stream.str(&quot;&quot;); /* stringstream loeschen */
   string_stream.clear(); /* flags loeschen */

   if(response.GetTransferType() == HttpResponse::close)
   {
      while(!stream.eof())
      {
         char c;
	 stream.read(&amp;c, 1);
	 string_stream.write(&amp;c, 1);
      }
   }
   else if(response.GetTransferType() == HttpResponse::size)
   {
      int len = std::atoi(response.GetParam(&quot;content-length&quot;).c_str());

      for(int i = 0;i &lt; len;++i)
      {
         char c;
         stream.read(&amp;c, 1);
         string_stream.write(&amp;c, 1);
      }
   }
   else 
   {
      int value;

      do
      {
         std::string temp;
         std::getline(stream, temp);
         value = hex_to_int(temp);

         for(int i = 0;i &lt; value;++i)
         {
            char c;
            stream.read(&amp;c, 1); /* das ist mein socketstream (1) */
            string_stream.write(&amp;c, 1);
         }
         std::getline(stream, temp); /* letztes new-line rausnehmen */
      } while(value != 0);
   }
</code></pre>
<p>bei (1) hab ich dann schrittweise nachgesehen was da reinkommt, und da ist es in ordnung.<br />
wenn ich nun aber den stringstream mit</p>
<pre><code class="language-cpp">string_stream.str().c_str()
</code></pre>
<p>ausgebe, bzw in einem TMemo anzeigen lasse, stimmen eben die ersten 8 zeichen nicht.</p>
<p>was mach ich da falsch ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574582</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Mon, 01 Sep 2008 10:28:55 GMT</pubDate></item></channel></rss>