stringstream problem



  • hola leute

    hab mir einen socketstream gestrickt um texte aus dem inet zu laden.
    beim empfang stopfe ich nun alles in einen stringstream damit ich dann den text spaeter parsen oder speichern kann.
    mein problem ist nun das die ersten 8 zeichen im stringstream immer muell sind

    ne ausgabe:

    (­!(­!E html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    

    mein socketstream liefert aber alles korrekt. hab ich nachgeprueft.

    hab es derzeit folgendermassen:

    void HtmlConnection::RecvContent(void)
    {
       string_stream.str(""); /* stringstream loeschen */
       string_stream.clear(); /* flags loeschen */
    
       if(response.GetTransferType() == HttpResponse::close)
       {
          while(!stream.eof())
          {
             char c;
    	 stream.read(&c, 1);
    	 string_stream.write(&c, 1);
          }
       }
       else if(response.GetTransferType() == HttpResponse::size)
       {
          int len = std::atoi(response.GetParam("content-length").c_str());
    
          for(int i = 0;i < len;++i)
          {
             char c;
             stream.read(&c, 1);
             string_stream.write(&c, 1);
          }
       }
       else 
       {
          int value;
    
          do
          {
             std::string temp;
             std::getline(stream, temp);
             value = hex_to_int(temp);
    
             for(int i = 0;i < value;++i)
             {
                char c;
                stream.read(&c, 1); /* das ist mein socketstream (1) */
                string_stream.write(&c, 1);
             }
             std::getline(stream, temp); /* letztes new-line rausnehmen */
          } while(value != 0);
       }
    

    bei (1) hab ich dann schrittweise nachgesehen was da reinkommt, und da ist es in ordnung.
    wenn ich nun aber den stringstream mit

    string_stream.str().c_str()
    

    ausgebe, bzw in einem TMemo anzeigen lasse, stimmen eben die ersten 8 zeichen nicht.

    was mach ich da falsch ?

    Meep Meep


Anmelden zum Antworten