003
02.11.2005, 16:54 Uhr
Sadrior
|
Das Ausgeben über den Stream klappt super. Beim Eingeben hab ich leider noch ein Problem.
Ich hab wie im Tutorial uflow und underflow für die Eingabe überladen:
Code: |
int sockstreambuffer::uflow() { char c=0; while(c != '\n') { ::recv(target.get(), &c, 1, 0); _inputbuffer.push_back(c); } _inputbuffer.push_back(c); _Gninc(); c = *gptr(); _GLength = _inputbuffer.end() - gptr(); return c; }
int sockstreambuffer::underflow() { if(gptr() && gptr() < egptr()) return *_Gninc(); _inputbuffer.clear(); _inputbuffer.reserve(32); int c = uflow(); _Gndec(); return std::char_traits<char>::not_eof(c); }
|
(target ist eine Membervariable vom Typ meiner tcpsocket-Klasse, die Methode get() liefert die entsprechende SOCKET-Struktur zurück)
Ich hab durchs debuggen rausbekommen, dass er eine Exepction wirft ( nach c = *gptr()) und danach den stat auf ios_base::badbit setzt. Der Debugger zeigt mir aber in uflow die richtigen Eingabe-Werte an.
Wenn ich versuche manuell per recv() im code Input auszulesen klappt alles wunderbar.
Hat jemand eine Idee was den Fehler veruhrsachen könnte? Dieser Post wurde am 02.11.2005 um 16:56 Uhr von Sadrior editiert. |