Próbuję znaleźć metodę, aby uzyskać liczbę znaków odczytywanych lub zapisywanych w strumieniu, który jest niezawodny, nawet jeśli wystąpił błąd, a zakończenie odczytu/zapisu jest krótkie.Czy metody Cashusa strehibuf C++ mogą generować wyjątki?
robiłem coś takiego:
return stream.rdbuf()->sputn(buffer, buffer_size);
ale jeśli realizacja streambuf z overflow
wolno rzucać excpections to nie będzie działać. Czy to jest? Nie udało mi się znaleźć go nigdzie udokumentowanego.
Niestety Piszę adapter do konwersji streambufs do innego interfejsu (Microsoft COM 'IStream'). Nie kontroluję ani nie wdrażam streambufów. – thehouse
Oczywiście musi istnieć sposób na zrobienie tego. W przeciwnym razie, w jaki sposób strumień źródłowy wiedziałby, ile znaków zostało zużytych przez strumień docelowy, jeśli ten ostatni miał błąd? – thehouse
@ domena operacja strumienia może się nie powieść, ale nadal można wywoływać odpowiednie funkcje, aby uzyskać informacje o strumieniu. na przykład można porównać wartość 'gptr' przed i po wywołaniu, które może zawieść ... lub podobne, powinno działać w teorii. –