Ich versuche, ein AsyncReadStream Strom implementieren von std :: cin und bisher haben Sie den folgenden Code zu lesen:Wie schreibt Daten auf eine MutableBufferSequence
template <class MutableBufferSequence, class ReadHandler>
void async_read_some(const MutableBufferSequence &buf, ReadHandler handler) {
char c[1024] = {};
std::streamsize num = std::cin.readsome(c, 1023);
c[num] = 0;
boost::asio::streambuf buff(1023);
std::ostream os(&buff);
os << c;
// How do I get the buff into the buf???? I've tried below:
//boost::asio::buffered_stream<boost::asio::streambuf> buff_stream(buff);
//boost::asio::read(buff_stream, buf);
handler(boost::system::error_code(), boost::asio::buffer_size(buf));
}
Ich bin mir bewusst, dass einige der Code im obigen Blockieren, wenn es nicht wirklich sein sollte, aber das ist neben meinem Problem hier (glaube ich). Ich habe die Dokumentation für MutableBufferSequence http://www.boost.org/doc/libs/1_41_0/doc/html/boost_asio/reference/MutableBufferSequence.html überprüft und es scheint keine offensichtliche Möglichkeit, dies zu tun. Offensichtlich verstehe ich etwas drastisch.
Vielleicht ist dies meine Frage ansewwrs. Ich werde später überprüfen und löschen, wenn duplicate: https://stackoverflow.com/questions/17241770/how-to-write-to-a-boostasiomutable-buffer?rq=1 –
Nein, es antwortet nicht. Es geht nicht um Puffersequenzen. – sehe
In Bezug auf die verknüpfte Antwort sollte ['buffer_cast'] (http://www.boost.org/doc/libs/1_65_1/doc/html/boost_asio/reference/buffer_cast.html) nur nach sorgfältiger Abwägung (B. Scatter-Read- oder Gather-Write-Puffer, bei denen der zugrunde liegende Speicher nicht zusammenhängend ist. Stattdessen sollte man oft typsichere Iteratoren über ['buffers_begin'] (http://www.boost.org/doc/libs/1_65_1/doc/html/boost_asio/reference/buffers_begin.html) und [' buffers_end' verwenden ] (http://www.boost.org/doc/libs/1_65_1/doc/html/boost_asio/reference/buffers_end.html). –